Javascript 承诺在$http承诺结束之前返回
我需要一个函数调用第二个函数,其中第二个函数包括一些设置代码、一个对REST服务器的http回调,然后在返回第一个函数之前,再调用一些清理代码。其思想是让第一个函数在第二个函数完成后显示结果消息 下面的示例在第二个函数完成回调之前返回,因此我不会得到http成功或错误的结果Javascript 承诺在$http承诺结束之前返回,javascript,promise,Javascript,Promise,我需要一个函数调用第二个函数,其中第二个函数包括一些设置代码、一个对REST服务器的http回调,然后在返回第一个函数之前,再调用一些清理代码。其思想是让第一个函数在第二个函数完成后显示结果消息 下面的示例在第二个函数完成回调之前返回,因此我不会得到http成功或错误的结果 var saveData = function(_this){ return new Promise(function(resolve,reject){ resolve( _this.Save
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;
});
};
您需要从保存方法返回承诺:
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
前面
此外,由于您从Save返回承诺,因此saveData中不需要另一个承诺:
var saveData = function(_this) {
return _this.Save('SavExit')
};
放下
saveData
函数,只需从Save
方法返回承诺即可。您甚至已经返回了一个承诺。不要使用.success
和.error
,它们已被弃用。仅使用.then()
。非常感谢,我找到的所有示例都非常复杂,我认为这很愚蠢,但无法理解。你让我开心!