我使用的是带有api的JavaScript库。
libapi.callnetwork(arg1,callback(data){
//handle data
}
然后我创建服务函数来像这样调用api
myFunction():Promise<any>{
libapi.callnetwork(arg1,callback(data){
return new Promise(resolve=>resolve(data));
})
}
myFunction将收到错误,因为它必须返回promise或声明为void。如何创建从此API返回承诺的函数?
答案 0 :(得分:15)
我们的想法不是在回调中创建和返回promise,而是在外部函数中创建它(你可以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 :(得分:0)
香草,抓住解决功能
let myFunction = () => {
let resolve;
let promise = new Promise(r => resolve = r);
libapi.callnetwork(arg1, resolve);
return promise;
};
答案 2 :(得分:-1)
myFunction():Promise<any>{
let resolveFn = (data) => data;
libapi.callnetwork(arg1, resolveFn);
return new Promise(resolveFn);
}