完成另一个后启动功能

时间:2014-03-06 22:46:08

标签: javascript jquery api

我有一个javascript文件,有两个函数all_surveys()和survey()。这两个函数都是API调用。我想在开始时启动函数all_surveys(),当它完成时我想启动函数调查()。我怎么能这样做?

function all_surveys(){
$.ajax({
    type: "GET",
    url: url_surveys,
    dataType: "json",
    success :
      function (data) {
      //some code
    },
    error:
});
}

function survey(){
$.ajax({
    type: "GET",
    url: url_survey,
    dataType: "json",
    success :
      function (data) {
      //some code
    },
    error:
});
}

2 个答案:

答案 0 :(得分:3)

使用承诺!

function all_surveys() {
    return $.ajax({
        type: "GET",
        url: url_surveys,
        dataType: "json"
    }).then(function (data) {
        //some code
        return …;
    });
}

function survey() {
    return $.ajax({
        type: "GET",
        url: url_survey,
        dataType: "json"
    }).then(function (data) {
        //some code
        return …;
    });
}

all_surveys().then(function(allsurveysResult) {
    surveys();
});

答案 1 :(得分:2)

尝试

all_surveys();
function all_surveys(){
$.ajax({
    type: "GET",
    url: url_surveys,
    dataType: "json",
    success: survey,
});
}

function survey(){
$.ajax({
    type: "GET",
    url: url_survey,
    dataType: "json",
    success :
      function (data) {
      //some code
    },
});
}

如果你想对数据做一些事情或做多件事,你必须使用匿名函数,但是:

all_surveys();
function all_surveys(){
$.ajax({
    type: "GET",
    url: url_surveys,
    dataType: "json",
    success: function(data){survey(); /* console.log(data) */},
});
}

function survey(){
$.ajax({
    type: "GET",
    url: url_survey,
    dataType: "json",
    success :
      function (data) {
      //some code
    },
});
}