【发布时间】:2019-04-13 19:11:31
【问题描述】:
我试图了解这 3 个选项之间的区别:
.then(myCallback)
.then(myCallback())
.then(() => { myCallback() })
myCallback 函数不返回任何内容,仅用于它的副作用,所以我不需要它将任何东西传递回承诺链。我不明白的是为什么在我的代码中只有第二个选项触发该函数,而这三个选项似乎都应该触发。
更新:这是基本要素的代码
serverCall(url, data) // fetch function
.then((response) => response.json())
.then(myCallback) // not running, only when () added
.catch((error) => { console.log(error) })
const myCallback = () => {
anotherServerCall(...).then(...)
}
更新 2
经过一番挖掘,我发现将.then((response) => response.json()) 作为第一个then response 是阻止.then(myCallback) 执行的原因。还是不知道为什么……
【问题讨论】:
-
你在兑现承诺吗?第二个调用函数并将结果传递给
then,这可能不是你想要的。 -
正如@tkausl 所指出的,对于要执行的这些回调,似乎没有解决承诺。
-
then用于fetch所以我认为回调正在解决 -
但是函数应该已经被调用了。选项 1 和 3 看起来不错,如果它们不被称为您的问题在其他地方。
-
您应该将
myCallback添加到您的问题中。
标签: javascript callback promise es6-promise