2017-10-19 125 views
1

这里是我的代码片段REST API调用await

var clients = require('restify-clients'); 

async function callApi(val){ 
     const client = clients.createJsonClient({ url: apiUrl }); 
     await client.get('/my/url', (err, req, res, obj) => { 
      if (err) { 
       return err; 
      } else { 
       return obj; 
      } 
     }); 
} 

我试图调用它的一些方法,但他们都没有工作

第一种方式:

var results = await callApi(val); 

第二种方式:

var results = callApi(val).then(data => { 
       console.log(data); 
      }) 

回答

5

client.get删除的await不会返回一个承诺,你不能在没有返回一个承诺的功能使用await(老实说,你可以,但它没有任何意义)。这里的正确的解决方案是promisifyclient.get并返回一个承诺:

function callApi(val) { 
    const client = clients.createJsonClient({ url: apiUrl }); 
    return new Promise((resolve, reject) => { 
    client.get('/my/url', (err, req, res, obj) => { 
     if (err) { 
     reject(err); 
     } else { 
     resolve(obj); 
     } 
    }); 
    }); 
} 

// Usage 
let results = await callApi(val); 
0

试试从结果

var results = callApi(val); 
+0

不能。 'callApi'是'async' – nilobarp