gpt4 book ai didi

javascript - 我什么时候应该拒绝 promise ?

转载 作者:行者123 更新时间:2023-12-03 21:42:49 24 4
gpt4 key购买 nike

我正在编写一些使用 Promise 的 JS 代码。例如,我打开一个表单弹出窗口并返回 jQuery Deferred目的。它的工作原理如下:

  • 如果用户在表单上单击“确定”并进行验证,则 Deferred 解析为表示表单数据的对象。

  • 如果用户单击“取消”,则“延迟”解析为空。

我想要决定的是,延迟者是否应该拒绝,而不是解决?更一般地说,我想知道什么时候应该解析为空对象之类的东西,什么时候应该拒绝?

这里有一些代码演示了这两个位置:

// Resolve with null.
var promise = form.open()
.done(function (result) {
if (result) {
// Do something with result.
} else {
// Log lack of result.
}
});

// Reject.
var promise = form.open()
.done(function (result) {
// Do something with result.
})
.fail(function () {
// Log lack of result.
});

最佳答案

您的两种策略的语义并不完全相同。明确拒绝延迟是有意义的。

例如,$.when()只要传递的延迟对象成功,就会继续累积结果,但会在第一个失败时退出。

这意味着,如果我们分别重命名您的两个 Promise promise1promise2:

$.when(promise1, promise2).then(function() {
// Success...
}, function() {
// Failure...
});

即使第一个表单被取消,上面的代码也会等到第二个表单关闭,然后再调用传递给 then() 的回调之一。调用的回调(成功或失败)仅取决于第二种形式的结果。

但是,如果第二个表单被取消,该代码将不会等待第一个表单关闭,然后再调用失败回调。

关于javascript - 我什么时候应该拒绝 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14841619/

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