首页 > 解决方案 > 从 Javascript 中的 api 请求返回数据

问题描述

我对 JavaScript 和 api 调用相当陌生,我一直在努力从 api 调用返回一组值。我的代码如下:

module.exports = function api() {

  const array = []

  function loop(result) {
    const array2 = [];
    for (let i = 0; i < result.length; i++) {
        array2.push(result[i].id);
    }  
     return array2;  
  }

  request(options, async (error, response, body) => {
    if (error) throw new Error(error);
    const result = body.results[0].results;
    const loop2 = await loop(result);
    array.push(loop2);
    console.log(array)
  });
  return array
};

所以我要做的就是在 API 请求将结果推送到数组之后返回数组。

当我 console.log 请求中的数组时,我可以看到正确的响应,但我不知道在请求完成后如何返回数组。

我尝试将模块转换为异步函数并等待请求,但效果相同。

编辑——在阅读了一些评论后,我认为我应该更具体地说明这个问题。我不确定如何使用上面的请求实现回调。我尝试了以下方法,但似乎不起作用。

    module.exports = function api() {

      function loop(result) {
        const array2 = [];
        for (let i = 0; i < result.length; i++) {
          array2.push(result[i].id);
        }
      return array2;
      }

     request(options, request1(error, response, body, requestResponse));

     async function request1(error, response, body, callback){
     if (error) throw new Error(error);
     const result = body.results[0].results;
     const loop2 = await loop(result);
     callback();
     }

     function requestResponse() {
     console.log(loop2)
     }

   };

标签: javascriptrequestasync-awaitreturn

解决方案


推荐阅读