我的问题是:是否可以将承诺传递给.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());
答案 0 :(得分:2)
是否可以将承诺传递给
.then
的第一个参数?
是
无论如何,有人告诉我,如果我这样做,将会隐含地(不必要地)创建新的承诺
Promise.prototype.then()
都会返回新承诺。
// BUT... is this okay? somePromise.then(asyncFunc());
不,它或多或少与:
相同const p = asyncFunc()
somePromise.then(p);
在somePromise
实际解析之前执行该功能。您可能需要的是somePromise.then(asyncFunction)
。这将在彼此之后正确地链接承诺。
有人告诉我,[...]我可能会面临在承诺链中处理错误的问题。
没有。只要链的末尾有catch
,这就不会改变承诺链的行为。