2016-12-11 15 views
0

APIを持つjavascriptライブラリを使用しています。コールバック関数から約束を返す関数を作成する方法

libapi.callnetwork(arg1,callback(data){ 
//handle data 
} 

その後、私はそれが約束を返すかのように、ボイド宣言しなければならないため、エラーになります。この

myFunction():Promise<any>{ 
    libapi.callnetwork(arg1,callback(data){ 
    return new Promise(resolve=>resolve(data)); 
    }) 
} 

のMyFunctionのようなAPIを呼び出すサービス関数を作成します。どのように私はこのAPIから約束を返す関数を作成できますか?

答えて

8

アイデアが作成してコールバックの内側からの約束を返しますが、外の機能でそれを作成することではない(ここですることができますreturnそれ)そして、だけ決意コールバックからの約束:

myFunction():Promise<any>{ 
    return new Promise(resolve => { 
    libapi.callnetwork(arg1, callback(data){ 
     resolve(data); 
    }); 
    }); 
} 

または単に

myFunction():Promise<any>{ 
    return new Promise(resolve => { 
    libapi.callnetwork(arg1, resolve); 
    }); 
} 
-1
myFunction():Promise<any>{ 
    let resolveFn = (data) => data; 
    libapi.callnetwork(arg1, resolveFn); 
    return new Promise(resolveFn); 
} 
0

バニラは、解決機能をつかむ

let myFunction =() => { 
    let resolve; 
    let promise = new Promise(r => resolve = r); 
    libapi.callnetwork(arg1, resolve); 
    return promise; 
}; 
+1

いいえ、しないでください。このため、延期は廃止されました。 – Bergi