这是我的代码段
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);
})
答案 0 :(得分:7)
client.get
不会返回一个承诺,你不能在一个不返回承诺的函数上使用await
(老实说你可以,但它没有意义)。这里正确的解决方案是 promisify client.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);
答案 1 :(得分:0)
尝试从结果中删除等待
var results = callApi(val);