Jer*_*son 1 javascript promise ecmascript-6 es6-promise
也许我没有正确使用谷歌搜索。没有参数的 then 函数不会阻塞吗?例如,你有一个承诺:
someFunc = () => {
return new Promise((res,rej)=>{
somethingAsync(input).then((val) => res(val))
})
}
Run Code Online (Sandbox Code Playgroud)
在我们功能的以下实现中。两者都会等待 someFunc 返回值吗?
someFunc().then(dosomethingafter())
someFunc().then((val) => dosomethingafter())
Run Code Online (Sandbox Code Playgroud)
在 JS 中,表达式会被急切地求值。这意味着每个函数参数在传递之前都会被评估。
someFunc().then(dosomethingafter())
Run Code Online (Sandbox Code Playgroud)
实际上等同于
var tmp = dosomethingafter();
someFunc().then(tmp)
Run Code Online (Sandbox Code Playgroud)
所以一个函数在someFunc().then(dosomethingafter())被调用之前then被调用,它的返回结果作为参数传递。
你可能的意思是
someFunc().then(dosomethingafter)
Run Code Online (Sandbox Code Playgroud)
请注意,没有函数调用——只有一个函数的引用被传递给then,然后当一个 promise 被解析时它会被调用。