【发布时间】:2017-05-09 03:11:48
【问题描述】:
我已经成功地链接了 Promise,但我发现我这样做的方式非常复杂:我想知道是否没有更优雅的方式来做到这一点。
我使用 Angular2、Typescript 和 signalR。
我有一个服务getIntervention,它通过 Id 从服务器返回一个对象。
在调用getIntervention之前,我想检查客户端是否连接到服务器,在连接到服务器之前,我想加载SignalR脚本。
所以我创建了第一个 promise scriptLoadedPromise,它等待 SignalR 脚本被加载。当scriptLoadedPromise 被解析时,一个新的promise connectionPromise 被创建,等待连接建立。
当connectionPromise被解析后,调用服务getIntervention。
对于每个承诺,我添加了名为 scriptLoaded 和 connectionDetected 的回调,它们调用了 resolve()。
这是我的代码:
public loadIntervention( numFI : number ) : Promise<Intervention>
{
let scriptLoadedPromise : Promise<Intervention> = new Promise( ( resolve, reject ) =>
{
// si le script est chargé alors la promesse est déjà tenue
if ( this.isScriptLoaded )
resolve();
else
this.scriptLoaded = ( () => { resolve(); } ) ;
}).then
( () => {
let connectionPromise : Promise<Intervention> = new Promise( (resolve, reject) =>
{
// si le serveur est connecté alors la promesse de connection est déjà tenue
if ( this.Connected )
resolve();
else
this.connectionDetected = ( () => { console.log("RECONNETED !!!!!"); resolve(); } );
} )
.then( () => { return this.proxy.server.getIntervention( numFI ); } );
return connectionPromise;
});
return scriptLoadedPromise;
}
有没有办法简化 3 个承诺链接的实现?
【问题讨论】:
标签: javascript angular typescript promise signalr