[英]Javascript promise/then not executing in correct order
这是代码:
vm.saveData = function(data) {
demoService.saveData(data, function(response) {
if (response.status === 200) {
principal.identity(true).then(function() {
$state.reload();
return toastr.success('Success');
});
}
return toastr.error('Failure');
});
}
从api获得成功响应后,它应仅显示“成功”消息。 但是,相反,它首先显示“失败”消息,然后显示“成功”消息。 我究竟做错了什么? 我需要设置超时时间还是这里缺少什么?
如果状态为200,那么您将设置一个以后success
调用的承诺。
不管状态是什么(因为它在if
之外,并且您没有使用else
),您总是会调用error
。
大概您只是想将return toastr.error('Failure');
到else
那不是您设置诺言的方式。 Promises使用.then()
。 您只是在使用传递函数作为回调。
vm.saveData = function(data) {
demoService
.saveData(data)
.then(success, error);
function success(response) {
principal.identity(true).then(function() {
$state.reload();
return toastr.success('Success');
});
}
function error(response) {
return toastr.error('Failure');
}
};
许多系统(例如AJAX)发送多个消息以指示任务的进度。 您想忽略先前的消息。 当操作未完成时,失败消息来自较早的事件。
我发现了我的错误。 添加“返回”可解决此问题。
'返回principal.identity(true).then(function(){
//在这里做点事
});”
vm.saveData = function(data) {
demoService.saveData(data, function(response) {
if (response.status === 200) {
return principal.identity(true).then(function() {
$state.reload();
return toastr.success('Success');
});
}
return toastr.error('Failure');
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.