JavaScript 中的 Promises 是否与 Java 中的异常处理类似?
Are Promises in JavaScript like Exception Handling in Java?
就像Java中的try()、catch()和throw()一样,异常处理就像JavaScript中的then()和catch()一样!?
初学者请教一些问题。请不要评判。 xD
不是真的..在Java脚本中我们也有try/catch块。
JavaScript 中 Promises 的主要好处是链接之类的东西。
Java 中 Promises 的等价物是 CompletableFuture。阅读 :)
try/catch
检测错误本身并将控制转移到捕获部分。 js
中也存在这种语法。
但在 then/catch
中,您必须自己通知发生错误(通过调用 reject
)。这意味着您可以在发现错误时通知 error
。 该错误可能是真实错误也可能不是真实错误(programming/logical 错误)。
Promises 和异常处理是不同的,它们是不一样的。在 javascript promises 中,我们可以使用 .then 来了解函数何时完成执行,这有助于了解异步函数何时完成执行,并且 javascript 还提供 try/catch 支持,正如您所知的 java.
不,它们完全不同。异常处理处理异常。 Promises 是一种获取 return 值并在异步环境中对其进行操作的方法,JavaScript 就是。
假设你想自定义JS确认框。您可以设置一个 jQuery 对话框,并且 return 是或否,具体取决于用户单击的按钮。像这样:
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
。这就是异步的意思;对函数的调用不会等到函数执行完毕才继续执行,这可能会导致各种不良行为。
Promises 是一种等待值被 returned 后再检查的方法。要查看如何使用承诺正确设置此示例,请参阅 this。
就像Java中的try()、catch()和throw()一样,异常处理就像JavaScript中的then()和catch()一样!? 初学者请教一些问题。请不要评判。 xD
不是真的..在Java脚本中我们也有try/catch块。
JavaScript 中 Promises 的主要好处是链接之类的东西。
Java 中 Promises 的等价物是 CompletableFuture。阅读 :)
try/catch
检测错误本身并将控制转移到捕获部分。 js
中也存在这种语法。
但在 then/catch
中,您必须自己通知发生错误(通过调用 reject
)。这意味着您可以在发现错误时通知 error
。 该错误可能是真实错误也可能不是真实错误(programming/logical 错误)。
Promises 和异常处理是不同的,它们是不一样的。在 javascript promises 中,我们可以使用 .then 来了解函数何时完成执行,这有助于了解异步函数何时完成执行,并且 javascript 还提供 try/catch 支持,正如您所知的 java.
不,它们完全不同。异常处理处理异常。 Promises 是一种获取 return 值并在异步环境中对其进行操作的方法,JavaScript 就是。
假设你想自定义JS确认框。您可以设置一个 jQuery 对话框,并且 return 是或否,具体取决于用户单击的按钮。像这样:
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
。这就是异步的意思;对函数的调用不会等到函数执行完毕才继续执行,这可能会导致各种不良行为。
Promises 是一种等待值被 returned 后再检查的方法。要查看如何使用承诺正确设置此示例,请参阅 this。