如何避免回调地狱'有承诺吗?

时间:2016-09-30 13:10:37

标签: javascript callback promise refactoring

我是Promises的新手,想了解什么是正确的方法来避免回调地狱'承诺,因为我有与使用回调相同的问题

foo(a: number): Promise<boolean>{
    return doSomething(a).then((b)=>{
        return doAnotherThing(b).then((c)=>{
            return true;
        })
    })
}

看看这个金字塔..

你怎么能避免这种情况?

提前致谢

3 个答案:

答案 0 :(得分:1)

只是链接承诺而不是嵌套它们:

NOT EXISTS

请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

答案 1 :(得分:1)

您可以使承诺返回承诺(或任何其他值),然后将其与.then()链接:

foo(a: number): Promise<boolean>{
  return doSomething(a).then((b)=>{
      return doAnotherThing(b);
    }).then((c)=>{
      return true;
    });
}

答案 2 :(得分:0)

如果你使用babel,ES2015你可以使用等待。

例如

async function foo(a) {
  var b = await doSomething(a);
  var c = await doAnotherThing(b);
  return true;
}

预设:ES2015,第3阶段