所以我试图通过这样的promise传递一个jQuery ajax请求:
var foo;
foo = bar().then(function(response) {
console.log("Success!", response);
console.log(foo[0].bool);
}, function(error) {
console.error("Failed!", error);
});
console.log(foo);
function bar(){
return new Promise(function(resolve, rejected){
$.ajax({
url: 'foo.php',
dataType: 'json',
success: function (data) {
resolve(data);
}
}).fail(function(xhr){
rejected(xhr);
})
})
}
Everthing在then()
中运行良好,console.log会显示我想要的内容,但当我使用console.log(foo)
时,它会显示Promise { <state>: "fulfilled", <value>: undefined }
我不明白这里发生了什么,有人能澄清一下吗?
是的,不幸的是,这是处理异步javascript时遇到的许多问题之一,在早期会遇到很多问题。
作为你试图做的事情的替代方案,你可以用你正在做的同样的方式分配foo
,然后传递Promise。然后,当您需要ajax请求的结果时,使用.then()
:
foo.then(ajaxResult => console.log(ajaxResult));