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

有没有童鞋遇到过同样的问题:promise并行串行的问题

有没有童鞋遇到过同样的问题:promise并行串行的问题

繁星淼淼 2019-08-21 11:40:08
letarr=[]functionsendPost(text){returnnewPromise((resolve)=>{setTimeout(()=>{arr.push({text,time:newDate()})resolve(text)},1000)})}consttext1=['a1','a2','a3','a4']consttext2=['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 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

已实现~
letarr=[]
functionsendPost(text){
returnnewPromise((resolve)=>{
setTimeout(()=>{
arr.push({
text,
time:newDate()
})
resolve(text)
},1000)
})
}
lettext1=['a1','a2','a3','a4']
lettext2=['b1','b2','b3','b4']
text1.forEach(v=>sendPost(v))
constpromiseArr=text2.map(v=>()=>sendPost(v))
promiseArr.reduce((prevPromise,nextPromise)=>{
returnprevPromise.then(()=>nextPromise())
},Promise.resolve())
                            
查看完整回答
反对 回复 2019-08-21
?
萧十郎

TA贡献1815条经验 获得超13个赞

没看懂你的意思,实现效果是类似的
consttext1=['a1','a2','a3','a4']
consttext2=['b1','b2','b3','b4']
letarr=[]
functionsendPost(text1,text2){
returnnewPromise((resolve)=>{
text1.forEach(item=>{
arr.push(`${item}${newDate()}`)
})
resolve([arr,text2])
})
}
sendPost(text1,text2).then(res=>{
console.log(res[0])
returnres[1]
}).then(res=>{
letcurrentTime=1000
res.forEach(item=>{
timer=setTimeout(()=>{
console.log(`${item}${newDate()}`)
},currentTime)
currentTime+=1000
})
})
                            
查看完整回答
反对 回复 2019-08-21
  • 2 回答
  • 0 关注
  • 272 浏览
慕课专栏
更多

添加回答

举报

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