作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在学习 JS 中的 Promise,我几乎没有与之相关的问题。
这是我的代码片段,
var promise = new Promise(
(resolve, reject) => {
var data = 'resolve';
resolve(data);
console.log('promise executor');
});
setTimeout(
() => {
promise.then(
(data) => {
console.log(data);
});
promise.then(
(data) => {
console.log(data);
});
}, 2000);
输出为,
promise executor
resolve
resolve
从上面的输出中,我了解到 executor
的主体在 Promise 的构造过程中立即执行。现在,我几乎没有以下疑问/疑问,
executor
的执行过程中,resolve
实际上是未定义的。浏览器仍然没有抛出错误并放弃调用,如何?resolve
函数在延迟 2 秒后设置。浏览器仍然调用该函数,尽管 executor
已经执行并且 data
变量已经失去生命。怎么样?resolve
的第二次设置也给出了输出。它对 .then()
的调用次数没有限制吗?最佳答案
resolve
promise
构造函数有一个自然参数 - 它确实存在。 (随意添加 console.log(typeof resolve);
)data
变量实际上并不存在点,但 promise 仍然已通过 'resolve'
值得到解决。因此,进一步添加到 promise 中的 .then
将立即以该值运行。.then
。如果需要,请查看文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises 关于javascript - Promise 是如何运作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49376785/
我是一名优秀的程序员,十分优秀!