gpt4 book ai didi

javascript - Promise 是如何运作的?

转载 作者:行者123 更新时间:2023-11-29 10:59:51 25 4
gpt4 key购买 nike

我正在学习 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 的构造过程中立即执行。现在,我几乎没有以下疑问/疑问,

  1. executor的执行过程中,resolve实际上是未定义的。浏览器仍然没有抛出错误并放弃调用,如何?
  2. resolve 函数在延迟 2 秒后设置。浏览器仍然调用该函数,尽管 executor 已经执行并且 data 变量已经失去生命。怎么样?
  3. resolve 的第二次设置也给出了输出。它对 .then() 的调用次数没有限制吗?

最佳答案

  1. resolve promise 构造函数有一个自然参数 - 它确实存在。 (随意添加 console.log(typeof resolve);)
  2. 此时,promise 已经运行,现在是一个值为“resolve”的已解决的 promise。data 变量实际上并不存在点,但 promise 仍然已通过 'resolve' 值得到解决。因此,进一步添加到 promise 中的 .then 将立即以该值运行。
  3. 不,没有限制 - 这是 promises 的一大优点,您可以传递它们而不受限于只有一个 .then。如果需要,请查看文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises

关于javascript - Promise 是如何运作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49376785/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com