鍍金池/ 問答/Linux  HTML/ promise多線路寫法問題

promise多線路寫法問題

 fn1().then(function(res){
    console.log(res)
    return fn2(res).then(function(res){
         console.log(res)
    },function(err){
        console.log(err)
    })
}).catch(function(res){
    return fn3(res).then(function(res){
    console.log(res)
    },function(err){
        console.log(err)
    })
})

fn1執(zhí)行后根據(jù)返回結(jié)果走不同線路,成功的話return fn2,失敗的話return fn3,這樣寫好像又開始嵌套,有沒有更好的寫法?

回答
編輯回答
挽歌

可以試著改下參數(shù)

function p(bool, msg) {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      if (bool) resolve(msg);
      else reject(msg);
    }, 1000)
  })
}

p(true, 'true').then(function (res) {
  console.log(res);
  return p(true, 'then');
}).catch(function (res) {
  console.log(res);
  return p(true, 'catch');
}).then(function (res) {
  console.log(res);
}).catch(function (res) {
  console.log(res)
})
2017年5月1日 01:15
編輯回答
伴謊

有babel的話上async/await吧,沒有的話,
最多也就是拆分成子函數(shù)看起來舒服點(diǎn)而已

2017年6月23日 11:24