如何创建从回调函数返回promise的函数

use*_*081 1 callback promise typescript angular

我使用有api的javascript库.

libapi.callnetwork(arg1,callback(data){
//handle data
}
Run Code Online (Sandbox Code Playgroud)

然后我创建服务函数来像这样调用api

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

myFunction将收到错误,因为它必须返回promise或声明为void.如何创建从此API返回承诺的函数?

Ber*_*rgi 16

我们的想法不是从回调内部创建和返回promise,而是在外部函数中创建它(你可以在哪里return)并且只解决来自回调的promise:

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

或者干脆

myFunction():Promise<any>{
  return new Promise(resolve => {
    libapi.callnetwork(arg1, resolve);
  });
}
Run Code Online (Sandbox Code Playgroud)