我需要让一个函数调用第二个函数,其中第二个函数包括一些设置代码,到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;
});
};
答案 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')
};