无法在promise中调用异步函数

时间:2018-03-17 11:54:13

标签: javascript es6-promise bluebird

我试图在promise中调用异步函数,但是.then()中的代码永远不会到达,.catch()也没有,也没有任何调试信息,所以我不知所措。

如果我在代码中的其他地方拨打同一个异步函数,那就可以了

我的怀疑是我错误地实现了蓝鸟的承诺,但我在代码中看不到任何反模式。 这是一些伪代码,基本上就是我的代码所做的:

composer.json

谢谢!

1 个答案:

答案 0 :(得分:0)

  return new Promise((resolve: any, reject: any) => {

这是一个反模式!除了将回调包装到其中之外,您不需要Promise构造函数。在其他所有情况下,您都可以退回链条:

 return this.execute()
        .then(result => {
            return this.execute2(result);
        }).then((result2: Array<any>) => {
            return this.problemfunction(result2);
        })

现在问题似乎是,你永远不会catch拒绝这个:

 someAsyncCall()

当你以反模式方式包装它时,错误不会冒泡。