gpt4 book ai didi

javascript - 没有陷入 promise 错误,但从第一次调用中得到结果

转载 作者:行者123 更新时间:2023-12-01 02:43:57 25 4
gpt4 key购买 nike

我有两个 AJAX 调用,第二个调用取决于第一个调用,所以我决定使用 Promise。我不断在控制台中收到 未捕获( promise )abc123 错误。请注意,abc123 是我期望从第一个 AJAX 调用获得的 id。第二个 AJAX 调用永远不会进入成功函数内部。

var promise = new Promise(function(reject, resolve) {
$.ajax({
url: url1,
dataType: 'json',
success: function (obj1) {
console.log("Got obj1");
resolve(obj1.id);
}
});
});

promise.then((id)=> {
$.ajax({
url: url2,
dataType: 'json',
success: function (obj2) {
console.log("Got obj2");
}
});
});

该结构看起来与 Basic Example 完全相同。我真的很困惑我做错了什么。

最佳答案

您混淆了回调函数的顺序:resolve 是第一个参数,reject 是第二个参数,因此当您调用第二个参数时(解决(obj.id))你实际上拒绝了你的 promise 。

但是,请注意 you should not use the Promise constructor无论如何,当dodging jQuery promises - 只需使用 Promise.resolve$.ajax 返回到 native 的 jQuery promise :

var promise = Promise.resolve($.ajax({
url: url1,
dataType: 'json'
})).then(obj1 => {
console.log("Got obj1");
return obj1.id;
});

promise.then(id => {
return $.ajax({
//^^^^^^ don't forget this
url: url2,
dataType: 'json'
});
}).then(obj2 => {
console.log("Got obj2");
});

关于javascript - 没有陷入 promise 错误,但从第一次调用中得到结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47385403/

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