javascript - 如何让promise.response返回API的响应?

标签 javascript express promise

TLDR:我的 Promise.response 需要在 API 调用和 Promise 中调用。

我正在尝试通过简单 Express.js 服务器的 Promise 从 API 调用中获取返回值。

这似乎是一个有很多问题的话题,但我还没有成功地适应这种情况的实现。我也尝试过:

  • 将 API 调用放在resolve() 中
  • 异步/等待实现(愿意重新访问)

这是相关代码的基本结构。在可能出现问题的部分上方有一条评论。

promise

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 出现在“success”之前,所以我们知道在上面的函数返回之前,resolve 函数已经触发。

来自 Shell 的日志

> undefined
> "success"

最佳答案

您没有提供使用 api 调用响应的方法。将该 promise 转换为 promise ,然后使用它。

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);

关于javascript - 如何让promise.response返回API的响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56567065/

相关文章:

javascript - 无法调用返回语句的函数

javascript - 如何将关闭图标移至搜索栏右侧内侧?

javascript - 有没有办法只用一个回调调用递归地进行异步调用?

javascript - .getScript() 回调可多次使用

promise - 即使存在捕获,也会出现“UnhandledPromiseRejectionWarning”错误

javascript - 如何创建带有日期和日期的全年月份的数组对象?

javascript - 使用不同的变量值多次执行外部 javascript 文件中 $(document).ready() 中的代码

node.js - 处理Node.js中的错误

session - 单服务器、不同端口上的多个 Express 和 Express-Session 应用程序

node.js - 如何修复 Typescript 编译错误 ts2345 "Type ' 响应'丢失......来自类型 'Response' : redirected, 预告片,formData!”