[英]How to get promise.response to return an API’s response?
TLDR:我的promise.response必须在API调用和promise中都被调用。
我试图通过Promise为简单的Express.js服务器从API调用中获取返回值。
这似乎是很多问题的话题,但是我还没有成功地使这种实现适合这种情况。 我也尝试过:
这是有问题的代码的基本结构。 在该部分上面可能有问题的地方有一条评论。
const externalModule = require('<route to module>');
let promise = new Promise(function(resolve,reject) {
// This is probably where the problem is
let returnValue = externalModule.apiCall(parameters);
resolve(returnValue);
});
promise.then(function(returnValue) {
console.log(returnValue);
});
module.exports = {
apiCall: function(parameters) {
apiCall(
parameters,
function(err, response) {
if (err) {
console.error(err);
return;
} else {
console.log("success");
return response
}
}
)
}
};
如果代码正常运行,我们将看到两个字符串。 一个来自API调用内部(“成功”),另一个来自其返回值。 因为undefined出现在“成功”之前,所以我们知道resolve函数在其上面的函数返回之前就已触发。
> undefined
> "success"
您没有提供使用api调用响应的方法。 将该承诺转换为承诺,然后使用它。
module.exports = {
apiCall: function(parameters) {
return new Promise((res, rej) => {
apiCall(
parameters,
function(err, response) {
if (err) {
rej(err);
} else {
res(response);
}
}
)
});
}
};
然后像这样使用它
let promise = externalModule.apiCall(parameters);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.