将Promise传递给`.then`的第一个参数

时间:2018-03-05 16:28:12

标签: es6-promise

我的问题是:是否可以将承诺传递给.then的第一个参数? (假设我对之前的返回值不感兴趣承诺,我只想将承诺链接起来。)

  

有人告诉我,如果我这样做,就会创造一个新的承诺   隐含地(不必要地),我可能会遇到处理错误的问题   在承诺链中吼叫。

我知道如果你没有在异步方法中显式返回一个promise,结果将被隐式包装。在这种情况下,.then不应该将参数包装在promise中,因为参数已经是一个promise:/

示例:

async function asyncFunc() {
  //async function (return Promise)
}

// I know this is okay
somePromise.then(() => asyncFunc());

// BUT... is this okay?
somePromise.then(asyncFunc());

1 个答案:

答案 0 :(得分:2)

  

是否可以将承诺传递给.then的第一个参数?

  

有人告诉我,如果我这样做,将会隐含地(不必要地)创建新的承诺

无论如何,

Promise.prototype.then()都会返回承诺。

// BUT... is this okay?
somePromise.then(asyncFunc());

不,它或多或少与:

相同
const p = asyncFunc()
somePromise.then(p);

somePromise实际解析之前执行该功能。您可能需要的是somePromise.then(asyncFunction)。这将在彼此之后正确地链接承诺。

  

有人告诉我,[...]我可能会面临在承诺链中处理错误的问题。

没有。只要链的末尾有catch,这就不会改变承诺链的行为。

相关问题