如何用两个回调来创建一个Promise来等待?

时间:2016-12-22 17:45:22

标签: angular typescript promise

我的目标是创建一个加载返回promise的对象的方法。当我收到回电时,我只需要打电话给#Promise'从回调中创建Promise。但是现在我想在从服务器获取对象之前包括等待重新连接到服务器。

public loadIntervention( numFI : number ) : Promise<Intervention>
{
    if ( ! this.Connected )
    {
        // here is the callback that detects reconnection
        jQuery.connection.hub.reconnected( () => { ???? }  );
    }


    return this.proxy.server.getIntervention( numFI ).toPromise();
}

我该如何实施?

1 个答案:

答案 0 :(得分:0)

您可以创建默认的,已解决的承诺:

let reconnectionPromise = Promise.resolve();

然后,如果您需要执行重新连接,只需将reconnectionPromise分配给重新连接操作返回的保证:

reconnectionPromise = jQuery.connection.hub.reconnected( () => { ???? }  );

然后,在return函数的loadIntervention语句中,将两个承诺链接在一起:

return reconnectionPromise.then(() => this.proxy.server.getIntervention( numFI ).toPromise());

因此,在这种情况下,如果this.Connectedtrue,则reconnectionPromise是已解决的承诺,并且会立即调用then函数执行this.proxy.server.getIntervention。否则,如果this.Connectedfalse,则在重新连接完成时将解析reconnectionPromise,然后然后执行then的{​​{1}}功能被称为。

这里有完整的例子:

this.proxy.server.getIntervention