首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在javascript中用promise替换'Async=false‘?

如何在javascript中用promise替换'Async=false‘?
EN

Stack Overflow用户
提问于 2016-08-11 19:07:07
回答 2查看 3.4K关注 0票数 2

我读了很多关于promises的文章,但我仍然不确定如何实现它。

我用async=false编写了下面的AJAX调用,为了让它正常工作,但我想用promise替换它,因为我看到async=false已经被弃用了。

代码语言:javascript
复制
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;
}

你能帮我吗?我只需要一个例子来理解它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-11 19:10:30

getBalance方法返回promise对象:

代码语言:javascript
复制
self.getBalance = function (orderNumber) {
    return $.ajax({
        url: "/Exchange.API/accountInfo/balance/" + orderNumber,
        type: "GET"
    });
}

然后像这样使用它:

代码语言:javascript
复制
service.getBalance().then(function(balance) {
    // use balance here
});
票数 4
EN

Stack Overflow用户

发布于 2016-08-11 19:11:49

作为第一点,您不希望将异步调用设置为false,因为它将锁定UI。

您可以简化返回ajax对象的方法,并将其作为promise进行处理。

代码语言:javascript
复制
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);
});
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38894659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档