猿问

promise回调噩梦,请问如何优化呢

detail.get(par1)

  .then((result)=>{

    let l1 = result;

    detail.get(par2)

    .then((result)=>{

      let l2= result;

      detail.get(par3)

      .then((result)=>{

        res.render('index.html', {l1:l1,l2:l2,l3:result});

      })

    })

这个似乎右回到了回调噩梦,请问该如何调整呢?

慕森卡
浏览 360回答 1
1回答

繁星淼淼

如果你的 detail.get 是可以并行的,那不如用 Promise.all 一起来吧:const getDetailPromises =  [par1, par2, par3]  .map(par => detail.get(par));Promise.all(getDetailPromises)  .then(([l1, l2, l3])        => res.render('index.html', {l1, l2, l3}));不然的话这个异步方法貌似没有意义啊。如果一定要等待前面的,那 async/await 无疑是最适合的。也可以像之前的答案那样串几个 then 避免缩进方面的麻烦。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答