javascript - 请教一下jq的回调函数改成promise实现的问题
本文介绍了javascript - 请教一下jq的回调函数改成promise实现的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
代码段1
var prepayment_apply,prepayment_operational;
//
loadMain().then(loadBtn()).then(function () {
console.log(prepayment_operational); // undefined
return loadProgress();
});
// fun1
function loadMain() {
return $.ajax({
url:'...',
success:function (data) {
prepayment_apply = data.prepayment_apply;
}
})
}
// fun2
function loadBtn() {
return $.ajax({
url:'...',
success:function (data) {
prepayment_operational = data.prepayment_operational;
}
})
}
// fun3
$.ajax({
url:'...',
type:'get',
dataType:'json',
load_animation:true,
success:function (data) {
...
}
})
我将$.ajax封装到函数函数中时,用promise写法打出的prepayment_operational是undefined。
代码段2
var prepayment_apply,prepayment_operational;
//
loadMain().then(function () {
$.ajax({
url: '...',
success: function (data) {
prepayment_operational = data.prepayment_operational;
}
})
}
)
.then(function () {
console.log(prepayment_operational); // '111'
return loadProgress();
});
当我直接把ajax写在then中就能得到我想要的值。并且当我把代码段1中的
loadMain().then(loadBtn()).then(function () {
console.log(prepayment_operational); // undefined
return loadProgress();
});
改成
loadMain().then(function () {return loadBtn()}).then(function () {
console.log(prepayment_operational); // undefined
return loadProgress();
});
代码段1也能正常console出prepayment_operational。
想请教下这是为什么。
解决方案
then
拿到的应该是一个函数,而不是其他的东西。。。
loadMain().then(loadBtn)....
这篇关于javascript - 请教一下jq的回调函数改成promise实现的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文