$ http承诺结束前返回的承诺

时间:2019-01-22 14:05:44

标签: javascript promise

我需要让一个函数调用第二个函数,其中第二个函数包括一些设置代码,到REST服务器的http回调,然后再包含一些清除代码,然后再返回第一个函数。想法是让第一个功能在第二个功能完成后显示结果消息。

下面的示例在完成回调之前从第二个函数返回,因此我无法获得http成功或错误的结果。

var saveData = function(_this){
        return new Promise(function(resolve,reject){
        resolve( _this.Save('SavExit') );
    });
};


saveData(this).then(function(httpResponse){
    // display response after http callback finishes
    console.log(httpResponse);
});


this.Save = function (lcAction) {
    // validate data

    $http.post('serverCallback.aspx',oSelectedVendor).
        success(function (data, status, headers, config) {

        // process data before returning;

        return true;
    }).
    error(function(data,status,headers,config){
        console.log(data);
        return false;
    });
};

1 个答案:

答案 0 :(得分:1)

您需要从Save方法返回Promise:

this.Save = function (lcAction) {
    // validate data

    return $http.post('serverCallback.aspx',oSelectedVendor).
        success(function (data, status, headers, config) {

        // process data before returning;

        return true;
    }).
    error(function(data,status,headers,config){
        console.log(data);
        return false;
    });
};

请注意,return是在$http前面添加的。

此外,由于您从保存返回了Promise,因此在saveData中不需要另一个:

var saveData = function(_this) {
    return _this.Save('SavExit')
};