为了账号安全,请及时绑定邮箱和手机立即绑定

promise并行串行的问题

promise并行串行的问题

小怪兽爱吃肉 2019-03-18 14:33:41
let arr = []        function sendPost(text){            return new Promise((resolve)=>{                                 setTimeout(()=>{                     arr.push({text,time:new Date()})                     resolve(text)                 },1000)             })         }        const text1=['a1','a2','a3','a4']        const text2=['b1','b2','b3','b4']想要的结果如下,是一次性输出text1再每隔一秒顺序输出text2(时间格式我简略了,这不是重点),用promise的话怎么实现arr=[ {text: "a1", time: 11:44:51},{text: "a2", time: 11:44:51},{text: "a3", time: 11:44:51},{text:"a4", time: 11:44:51},{text: "b1", time: 11:44:52},{text: "b2", time: 11:44:53},{text: "b3", time:11:44:54},{text: "b4", time: 11:44:55}]
查看完整描述

2 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

已实现~

    let arr = []    function sendPost(text) {        return new Promise((resolve) => {
            setTimeout(() => {
                arr.push({
                    text,                    time: new Date()
                })
                resolve(text)
            }, 1000)
        })
    }    let text1 = ['a1', 'a2', 'a3', 'a4']    let text2 = ['b1', 'b2', 'b3', 'b4']
    text1.forEach(v => sendPost(v))    const promiseArr = text2.map(v => ()=>sendPost(v))
    promiseArr.reduce((prevPromise, nextPromise) => {        return prevPromise.then(()=>nextPromise())
    }, Promise.resolve())


查看完整回答
反对 回复 2019-03-18
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

没看懂你的意思,实现效果是类似的

const text1=['a1','a2','a3','a4']const text2=['b1','b2','b3','b4']let arr = []function sendPost(text1,text2){    return new Promise((resolve)=>{
            text1.forEach(item=>{
            arr.push(`${item} ${new Date()}`)
        })
            resolve([arr,text2])
    })
}
sendPost(text1,text2).then(res=>{    console.log(res[0])  
      return res[1]   
}).then(res=>{           let currentTime = 1000    
           res.forEach(item=>{
           timer =setTimeout(()=>{              console.log(`${item} ${new Date()}`)
            },currentTime)
           currentTime +=1000
        })     
})



查看完整回答
反对 回复 2019-03-18
  • 2 回答
  • 0 关注
  • 553 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信