我已经阅读了很多关于promises
的内容,但我仍然不确定如何实现它。
我使用async=false
编写了下面的AJAX调用以使其正常工作,但我希望将其替换为promise,因为我看到async=false
已被弃用。
self.getBalance = function (order) {
var balance;
$.ajax({
url: "/API/balance/" + order,
type: "GET",
async: false,
success: function (data) {
balance = data;
},
done: function (date) {
}
});
return balance;
}
你能帮助我吗?我只需要一个例子来理解它。
答案 0 :(得分:4)
首先,您不希望将异步调用设置为false,因为它会锁定UI。
您可以简化返回ajax对象的方法,并将其作为承诺处理。
self.getBalance = function (orderNumber) {
return $.ajax({
url: "/Exchange.API/accountInfo/balance/" + orderNumber,
type: "GET",
});
};
var demoNumber = 12;
self.getBalance(demoNumber).then(function(data){
console.log(data);
},function(err){
console.log("An error ocurred");
console.log(err);
});
答案 1 :(得分:3)
从getBalance
方法返回promise对象:
self.getBalance = function (orderNumber) {
return $.ajax({
url: "/Exchange.API/accountInfo/balance/" + orderNumber,
type: "GET"
});
}
然后像这样使用它:
service.getBalance().then(function(balance) {
// use balance here
});