从承诺函数返回对象



我试图返回用从API接收到的值创建的列表到调用它的地方。我使用的承诺,以确保函数返回值后,它从调用API的值。为了更好地解释代码,我有一个调用getNamedEntity的函数callAPI。最后,我想让callAPIgetNamedEntity中得到request.post()的结果。但是,当我分别在每个函数中使用console.log("outside " + result)console.log("inside doRequest " + result)进行测试时,我得到Promise对象和未定义。

function callAPI(text) {
const result = getNamedEntity(text);
console.log("outside " + result);
}
async function getNamedEntity(text) {
var requestJson = {
...
};
var options = {
...
};
function doRequest(options) {
return new Promise(function (resolve, reject) {
request.post(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
const result = resolve(body);
console.log("inside doRequest " + result);
} else {
reject(error);
}
});
});
}
doRequest(options)
.then((body) => {
var entityList = [];
const obj = JSON.parse(body);
const words = obj.return_object.sentence[0].NE;
for (var word of words) {
entityList.push(word.text);
}
return entityList;
})
.catch((error) => {
console.log(error);
});
}
outside [object Promise]
inside doRequest undefined

console.log("outside " + result)返回一个promise对象,因为您忘记了awaitgetNamedEntity(text);,或者,将console.log放在.then中,如getNamedEntity(text).then(result => console.log(result));

console.log("inside doRequest " + result);返回undefined,因为resolve函数返回void,即它不返回任何东西。更改为console.log("inside doRequest " + body);或将console.log移动到.then((body)部分

相关内容

  • 没有找到相关文章

最新更新