TLDR:我的promise.response需要在API调用和承诺中调用。
我试图通过一个简单的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调用(“成功”),另一个来自它的返回值。因为未定义的函数出现在“成功”之前,所以我们知道,在上面的函数返回之前,已触发了解析函数。
来自Shell的日志
> undefined
> "success"发布于 2019-06-12 17:07:59
您没有提供使用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);https://stackoverflow.com/questions/56567065
复制相似问题