是否有一个众所周知的设计模式允许在异步调用后注册回调?

时间:2016-10-04 16:20:20

标签: asynchronous design-patterns callback

当您进行异步调用时,通常必须向其传递回调以处理结果。

这对于阅读代码的人来说是违反直觉的。我们通常考虑做什么,然后考虑稍后要做什么,但在这种情况下,我们需要在定义首先运行的动作之前定义如何处理结果。

示例:

W {A: P, W: U, g: ye}

我已经看过(并且我在java中实现了自己)其他模式,在这种模式中,您首先获取异步调用以获取操作的标记,然后将回调注册到它。

如果在回调寄存器之前运行了异步操作,那么它(回调)被同步调用它还没有被运行它就像正常回调一样工作,然后运行它。

示例(伪代码):

$.ajax({
    url : url1,
    success: function(data) {
        data1 = data;
        if(data2) perform();
    },
});

这种模式的名称是什么?

1 个答案:

答案 0 :(得分:0)

Promises, Futures, or Deferreds是回调管理器,用于链接后续异步代码,以避免嵌套回调。

在JavaScript中,承诺已在Promises/A+中形式化,但有许多实现可能会或可能不会遵循正式标准,例如jQuery的Deferreds pre version 3。