我的目标是创建一个加载返回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();
}
我该如何实施?
答案 0 :(得分:0)
您可以创建默认的,已解决的承诺:
let reconnectionPromise = Promise.resolve();
然后,如果您需要执行重新连接,只需将reconnectionPromise
分配给重新连接操作返回的保证:
reconnectionPromise = jQuery.connection.hub.reconnected( () => { ???? } );
然后,在return
函数的loadIntervention
语句中,将两个承诺链接在一起:
return reconnectionPromise.then(() => this.proxy.server.getIntervention( numFI ).toPromise());
因此,在这种情况下,如果this.Connected
为true
,则reconnectionPromise
是已解决的承诺,并且会立即调用then
函数执行this.proxy.server.getIntervention
。否则,如果this.Connected
为false
,则在重新连接完成时将解析reconnectionPromise
,然后然后执行then
的{{1}}功能被称为。
这里有完整的例子:
this.proxy.server.getIntervention