这两种语法有什么区别
What is the difference between these two syntax
如果我有
promise = userService.updateUser($stateParams.userId, req);
promise.then(
function(user) {
logger.logSuccess('Updated user');
$scope.resetForm();
WizardHandler.wizard().goTo(0);
return user;
},
function(error) {
logger.logError('Ups an error has occurred');
console.error('error updating user: ' + error);
}
);
promise.then(function(user) {
_.each(uploader.getNotUploadedItems(), function(item) {
return item.formData.push({
id: user.id
});
});
});
然后,如果 updateUser 失败,将显示日志,然后第二个 then
将不会执行,但是如果我有
promise = userService.updateUser($stateParams.userId, req).then(
function(user) {
logger.logSuccess('Updated user');
$scope.resetForm();
WizardHandler.wizard().goTo(0);
return user;
},
function(error) {
logger.logError('Ups an error has occurred');
console.error('error updating user: ' + error);
}
);
promise.then(function(user) {
_.each(uploader.getNotUploadedItems(), function(item) {
return item.formData.push({
id: user.id
});
});
});
然后执行第二个
我不明白为什么,我的意思是这不就是常规链接吗?
if the updateUser fails the log will be shown and then second then will not be executed
是的,因为你在分支:
success: - logSuccessAndResetForm()
| - makeNewFormData()
updateUser() --+
promise |
error - logError()
but when using regular chaining the second chain will be executed
当然可以。您的错误处理程序 处理 错误并且 promise
由 return 值实现。
success: - logSuccessAndResetForm() success: - makeNewFormData()
| \ |
updateUser() --+ >- promise --+
| / |
error - logError() ´ error: (nothing)
另请参阅 this answer 以获得类似代码的更漂亮的控制流程图。
如果我有
promise = userService.updateUser($stateParams.userId, req);
promise.then(
function(user) {
logger.logSuccess('Updated user');
$scope.resetForm();
WizardHandler.wizard().goTo(0);
return user;
},
function(error) {
logger.logError('Ups an error has occurred');
console.error('error updating user: ' + error);
}
);
promise.then(function(user) {
_.each(uploader.getNotUploadedItems(), function(item) {
return item.formData.push({
id: user.id
});
});
});
然后,如果 updateUser 失败,将显示日志,然后第二个 then
将不会执行,但是如果我有
promise = userService.updateUser($stateParams.userId, req).then(
function(user) {
logger.logSuccess('Updated user');
$scope.resetForm();
WizardHandler.wizard().goTo(0);
return user;
},
function(error) {
logger.logError('Ups an error has occurred');
console.error('error updating user: ' + error);
}
);
promise.then(function(user) {
_.each(uploader.getNotUploadedItems(), function(item) {
return item.formData.push({
id: user.id
});
});
});
然后执行第二个
我不明白为什么,我的意思是这不就是常规链接吗?
if the updateUser fails the log will be shown and then second then will not be executed
是的,因为你在分支:
success: - logSuccessAndResetForm()
| - makeNewFormData()
updateUser() --+
promise |
error - logError()
but when using regular chaining the second chain will be executed
当然可以。您的错误处理程序 处理 错误并且 promise
由 return 值实现。
success: - logSuccessAndResetForm() success: - makeNewFormData()
| \ |
updateUser() --+ >- promise --+
| / |
error - logError() ´ error: (nothing)
另请参阅 this answer 以获得类似代码的更漂亮的控制流程图。