jquery(a)等待的同步请求

时间:2016-02-08 16:16:38

标签: javascript jquery ajax backbone.js

我是javascript的新手,我遇到了jquery和AJAX请求的第一个问题。我在页面上有很多切换,当我点击它们时,我必须要求REST服务查询我是否可以。如果可以的话,我会显示一个警告框,你确定blablabla,如果没有警告说用户不能。

这是主要的问题,如果我使用async:false它可以工作,但我可以阅读它不是一个好的做法(和铬记住我不是)那么这样做的好方法是什么?

我正在使用骨干网,我不希望每次切换都设置一个方法来处理点击,第二种方法来处理回调。

这样做的好方法是什么?

startService: function(serviceName){
        var confirm = true;

        var $paid = this.model.getPaidTo(serviceName);
        console.log(this.model.getPaidTo(serviceName));
        //Here the consol.log is always undefined if I use async: true

        if ($paid == 'false'){
            confirm = confirm("Are you sure to start" + this.model.services[serviceName].price + ". Continue ?");
        }

        if(confirm){
            console.log("start " + serviceName + " service")
            return true;
        }
        return false;
    },

型号:

getPaidTo: function(serviceName){
        var self = this;
        var Url = require.apiUrl + "profile/girl/" + this.loginModel.id + "/checkservice/" + serviceName;

        $.ajax({
            type: "GET",
            url: Url,
            data: {},
            success: function(data){
                return data.data.service;
            },
            error: function(data){
                self.error = 'error';
                return 'error';
            }
        });
    }

祝你好运

1 个答案:

答案 0 :(得分:0)

谢谢Slaks,

它工作得很好。以下是我进行修改的方式:

getPaidTo: function(serviceName){
        var Url = require.apiUrl + "profile/girl/" + this.loginModel.id + "/checkservice/" + serviceName;

        return $.ajax({
            type: "GET",
            url: Url
        });
    }

型号:

        // create url
        let imageURL = NSURL(string: Constants.CatURL)!

        // create task
        let task = NSURLSession.sharedSession().dataTaskWithURL(imageURL) {
            (data, response, error) in print("task finished")
        }

希望它会帮助其他人。

祝你好运