Promise.then() 在 promise 解决之前执行
Posted
技术标签:
【中文标题】Promise.then() 在 promise 解决之前执行【英文标题】:Promise.then() executing before the promise is resolved 【发布时间】:2018-05-22 17:05:10 【问题描述】:我对 Promise 有疑问。我有这个代码:
let line = hey.fetchBans().then(() =>
myStuff();
console.log(line);
);
问题是myStuff()
在fetchBans()
解决之前执行。我试图看看这是否是记录line
的真正问题,它会打印Promise <pending>
我做错了什么?
【问题讨论】:
请提供有关 hey.fetchBeans 功能的更多信息 - 即它的源代码 “问题是 myStuff() 在 fetchBans() 解决之前执行” 如果我们假设fetchBeans
返回您所说的承诺,则不是上面的代码直到myStuff
运行后才解决。请使用 minimal reproducible example 来更新您的问题,以展示问题,最好是使用 Stack Snippets([<>]
工具栏按钮;here's how to do one)可运行。
我猜 Promise-status 会在 回调被调用之后更新。您应该将您的预期值作为回调的参数。
【参考方案1】:
line
不是hey.fetchBans()
返回的承诺(并且在调用回调之前确实完成了),而是.then(…)
返回的承诺(并且将使用回调的结果值解决) .它总是在那个回调中等待处理。
【讨论】:
非常感谢,我完全忘记了所有 Promise 的东西-_-'以上是关于Promise.then() 在 promise 解决之前执行的主要内容,如果未能解决你的问题,请参考以下文章
在 promise.then 或 promise.catch 中调用时,Array.push 的工作很奇怪
如果使用 then ,是不是需要在 promise 中嵌套 catch?
如何对 AngularJS $promise.then 进行单元测试