就像Java中的try()、catch()和throw()作为异常处理,就像JavaScript中的then()和catch()作为promise!?只是一个初学者在问一些问题。请不要评头论足。xD
发布于 2018-08-26 14:01:13
不,它们完全不同。异常处理处理异常。Promise是一种在异步环境中返回值并对其执行操作的方法,JavaScript就是这样。
假设您想要定制JS确认框。您可以设置一个jQuery对话框,并根据用户单击的按钮返回yes或no。如下所示:
function msgBoxConfirm(msgText, e) {
e.preventDefault(); // Cancel the default behavior
e.stopPropagation(); // Stop any other events from firing down the line
$('#myDialogDiv').html(msgText).dialog({
modal: true,
title: boxTitle,
buttons: {
'Yes': function() {
$(this).dialog('close');
return true;
},
'No': function() {
$(this).dialog('close');
return false;
}
}
});
}
现在,调用消息框函数:
var retval = msgBoxConfirm('Do you really want to do that?', e);
if (!retval) {
//Do the no behavior
} else {
//Do the yes behavior
}
您将发现,在找到retval
的值之前,此代码将继续执行,因此当您使用if
对retval
求值时,它的值将为undefined
。这就是异步的含义;对函数的调用不会等到函数执行完成后才继续执行,这可能会导致各种不好的行为。
Promise是一种在检查之前等待返回值的方法。要查看如何使用promises正确设置此示例,请参阅this。
https://stackoverflow.com/questions/52023489
复制相似问题