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