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

时间:2016-12-11 13:47:02

标签: angular typescript callback promise

我使用的是带有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返回承诺的函数?

3 个答案:

答案 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);
}