如何在承诺完成后调用 resolve
How to call resolve after a promise is fulfilled
我有一个对话框有单选按钮和确认按钮。
在单击确认按钮之前,我们不知道调用了什么函数。\
所以我创建了一个对象来引用回调函数,如下所示。
var context = {
callback: undefined;
resolve: undefined;
reject: undefined;
}
dialog.open = function(callback){
context.callback = callback;
return new Promise((resolve, reject) =>{
context.resolve = resolve;
context.reject = reject;
})
}
确认函数喜欢这样;
function confirm () {
if(radio.value === "test") callA();
else callB();
}
function callA() {
context.callback("A");
context.resolve("A");
}
function callB() {
context.callback("B");
context.resolve("B");
}
然后我调用 dialog.open()
dialog.open((res) => {
console.log(res)
}).then((res) => {
console.log(res)
})
为了测试,我点击了多次确认按钮。
每次单击都会调用回调,但会调用一次 resolve(then)..
是否有可能 promise.then 像回调一样工作?
当您第一次点击确认按钮时,confirm() 将被调用,因此 context.callback() 和 context.resolve() 将被调用。当 context.resolve() 被调用时,它解决了承诺,即将其内部状态从未决更改为已解决。
现在,在随后点击确认按钮时,同样的事情发生了,但由于承诺已经解决(通过第一次点击),即使 context.resolve() 被调用也没有任何反应。
至于 then(),它接受一个回调函数作为参数。当承诺解决或拒绝时(仅限第一次),异步调用此回调函数。您可以通过 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then 详细了解 then() 的工作原理。
我有一个对话框有单选按钮和确认按钮。
在单击确认按钮之前,我们不知道调用了什么函数。\
所以我创建了一个对象来引用回调函数,如下所示。
var context = {
callback: undefined;
resolve: undefined;
reject: undefined;
}
dialog.open = function(callback){
context.callback = callback;
return new Promise((resolve, reject) =>{
context.resolve = resolve;
context.reject = reject;
})
}
确认函数喜欢这样;
function confirm () {
if(radio.value === "test") callA();
else callB();
}
function callA() {
context.callback("A");
context.resolve("A");
}
function callB() {
context.callback("B");
context.resolve("B");
}
然后我调用 dialog.open()
dialog.open((res) => {
console.log(res)
}).then((res) => {
console.log(res)
})
为了测试,我点击了多次确认按钮。 每次单击都会调用回调,但会调用一次 resolve(then)..
是否有可能 promise.then 像回调一样工作?
当您第一次点击确认按钮时,confirm() 将被调用,因此 context.callback() 和 context.resolve() 将被调用。当 context.resolve() 被调用时,它解决了承诺,即将其内部状态从未决更改为已解决。
现在,在随后点击确认按钮时,同样的事情发生了,但由于承诺已经解决(通过第一次点击),即使 context.resolve() 被调用也没有任何反应。
至于 then(),它接受一个回调函数作为参数。当承诺解决或拒绝时(仅限第一次),异步调用此回调函数。您可以通过 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then 详细了解 then() 的工作原理。