我有两个AJAX调用,第二个依赖于第一个,所以我决定使用promises。我一直在控制台中出现未捕获(在承诺中)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完全相同。我真的很困惑我做错了什么。
答案 0 :(得分:2)
你混淆了回调函数的顺序:<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="logo_container">
<div class="lines"><img src="https://d30y9cdsu7xlg0.cloudfront.net/png/967511-200.png"></div>
</div>
是第一个参数,resolve
是第二个参数,所以当你调用第二个参数reject
时,你实际上拒绝了你的承诺。
但是,在you should not use the Promise
constructor时请注意dodging jQuery promises - 只需使用Promise.resolve
来转换resolve(obj.id)
返回本地的jQuery承诺:
$.ajax