【发布时间】:2017-10-14 17:07:32
【问题描述】:
当我解决承诺时,该函数应该继续执行:
function test(){
return new Promise(resolve=>{
resolve(5)
setTimeout(()=>{console.log(7)}, 2000}
})
}
然后我像这样调用函数
test().then(console.log);
所以它打印出 5,然后在 2 秒后打印出 7,正如我所料。 但是,如果我在 resolve() 之后使用同步的东西,它的工作方式会有所不同:
function test(){
return new Promise(resolve=>{
resolve(5)
for(let i = 0; i < 100; i++)
console.log(i)
})
}
现在它打印从 0 到 100 的数字,然后打印 5。但我希望它通过 resolve() 返回 5,然后才打印所有其余的东西。
【问题讨论】:
-
没有。你应该做
return resolve(5)然后你什么都不做。否则,你为什么要解决.... -
@yBrodsky 不正确。您可以使用 resolve 而不显式返回它。
return唯一重要的是new Promise。 -
关键字是应该。任何实际示例,您希望在解决后继续做一些事情,在承诺内?。
-
这是因为 then-callback 是在 Promise body 之后执行的。
resolve()是最后执行的.thencb 的方式 -
@yBrodsky,我收到了很多找到的同行,如果其中一个是我正在寻找的,我会立即解决。但该功能将继续与其他同行合作。
标签: javascript asynchronous promise