promise并行串行的问题

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}]


小怪兽爱吃肉
浏览 554回答 2
2回答

holdtom

已实现~    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())

拉莫斯之舞

没看懂你的意思,实现效果是类似的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         })      })
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5