gpt4 book ai didi

javascript - 无法理解 MDN 文档中 Promise.prototype.then() 的注释

转载 作者:太空宇宙 更新时间:2023-11-04 02:56:49 26 4
gpt4 key购买 nike

我正在学习将我的 Node.js 代码风格从回调转换为 promise ,这似乎是趋势,并且它有很多优点。为了防止误解 promise 的要点和好处,我正在阅读 document on MDN 。我可以理解此页面中的示例,但我不清楚文档开头提到的注释:

Note: ... If the first argument is omitted or provided a non-function,the new Promise that is created simply adopts the fulfillment state ofthe Promise that then is called on (if it becomes fulfilled). If thesecond argument is omitted or provided a non-function, the new Promise thatis created simply adopts the rejection state of the Promise that then is calledon (if it becomes rejected).

如果这是微不足道的,请提前抱歉。希望能举例说明,谢谢。

最佳答案

编辑:已更新以更好地符合规范 - 请参阅 herehere .

.then 方法调用两个函数之一,具体取决于它所附加的 Promise 是已履行还是已拒绝。然后它根据该调用的结果返回一个新的 Promise。这允许您根据 Promise 是否成功来运行不同的逻辑,并且可以轻松地将 Promise 链接在一起。

但是,如果您决定不传入其中一个函数,它会使用合理的默认值 - 这就是您发布的注释所暗示的内容。不过,演示可能比描述容易得多!

<小时/>

如果您省略了 onRejected 回调,如下所示:

myPromise.then(function (value) {
console.log("success!");
});

结果与这样做是一样的:

myPromise.then(function (value) {
console.log("success!");
}, function (reason) {
throw reason;
});
<小时/>

如果省略 onFulfilled 回调,如下所示:

myPromise.then(null, function (reason) {
console.log("fail!");
});

结果与:

myPromise.then(function (value) {
return value; // the same as returning Promise.resolve(value)
}, function (reason) {
console.log("fail!");
});
<小时/>

如果你把两者都排除在外......这基本上毫无意义,但仍然:

myPromise.then();

这实际上与以下内容相同:

myPromise.then(function (value) {
return value;
}, function (reason) {
throw reason;
});

反过来,基本上就是:

myPromise

关于javascript - 无法理解 MDN 文档中 Promise.prototype.then() 的注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41262215/

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