我使用带有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?
其思想不是从回调内部创建和返回承诺,而是在外部函数中创建它(在该函数中可以return
it),并且只从回调解析承诺:
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);
});
}
Vanilla,抓取resolve函数
let myFunction = () => {
let resolve;
let promise = new Promise(r => resolve = r);
libapi.callnetwork(arg1, resolve);
return promise;
};
myFunction():Promise<any>{
let resolveFn = (data) => data;
libapi.callnetwork(arg1, resolveFn);
return new Promise(resolveFn);
}