Javascript Node.JS:Promise在写入文件时返回null

Javascript Node.JS:Promise在写入文件时返回null,javascript,json,node.js,promise,async-await,Javascript,Json,Node.js,Promise,Async Await,我研究一个问题已经有一段时间了,但我似乎不能完全理解问题的根源。 我的应用程序的工作流如下所示: 获取单个请求的项目数组 对该数组的每个项目进行单独请求:Promise.all(array.map(individualRequest)) 从每个请求中获取信息,并将其更改为特定布局 在JSON文件中记录数组中所有项的修改信息 到第四步为止,一切似乎都在顺利进行。在第三步中,我正确地修改了对象,但是当它返回到main(每个步骤都有一个专用模块)时,第四步在JSON文件中写入:[null,null,n

我研究一个问题已经有一段时间了,但我似乎不能完全理解问题的根源。 我的应用程序的工作流如下所示:

  • 获取单个请求的项目数组
  • 对该数组的每个项目进行单独请求:
    Promise.all(array.map(individualRequest))
  • 从每个请求中获取信息,并将其更改为特定布局
  • 在JSON文件中记录数组中所有项的修改信息
  • 到第四步为止,一切似乎都在顺利进行。在第三步中,我正确地修改了对象,但是当它返回到main(每个步骤都有一个专用模块)时,第四步在JSON文件中写入:[null,null,null…](原始数组中的每个项都为null)

    我不知道如何将其放入代码中并使其变得简单(无需发布整个原始代码),但您可以在此处找到完整版本:

    我知道项目信息被正确转换,因为我在转换模块中留下了一个控制台日志以供验证,它为我提供了正确的信息:

    [补充]: {“名称”:“DASHEUR”,“a”:[“151.400000”,“1”,“1.000”],“b”:[“148.500000”,“1”,“1.000”],“c”:[“151.577960”,“0.01000000”],“v”:[“1861.79012466”,“3063.32653118”],“p”:[“151.527639”,“150.811326”],“t”:[6881205],“l”:[“146.599930”,“146.599930”,“h”:“156.118780”,“156.118780”,“148000000”

    我不知道为什么,当它回到main(app.js)时:

    我得了可怕的病

    [零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零]

    存储在JSON文件中。。。(同样,数组中的每个项都有一个“null”)

    提前感谢您的帮助,我希望我能够保持它的清晰和简单

    您的“return”语句位于forEach函数作用域内,而它应该位于forEach循环之后的外部

    更正版本:

    function transformTicker(ticker) {
      var result = {};
      Object.keys(ticker).forEach((k) => {
        // Object.keys(ticker[pair]).forEach((k) => {
          // console.log(k);
          result= {
            name: k,
            a: ticker[k].a,
            b: ticker[k].b,
            c: ticker[k].c,
            v: ticker[k].v,
            p: ticker[k].p,
            t: ticker[k].t,
            l: ticker[k].l,
            h: ticker[k].h,
            o: ticker[k].o,
          }
          console.log(`[ADDED]: ${JSON.stringify(result)}`);
        // });
      });
      return result;
    }
    

    如果不查看
    getTickerInfo()
    getTickerList()
    函数的功能,就无法说出问题所在。显然,
    getTickerInfo()
    解析为一个充满
    null
    的数组,您是否意识到
    if(err)throw err在异步回调中处理错误不合理吗?嘿,jfriend00!一点也不。。。我是一个完全的初学者,所以如果你有更好的方法和一些资料来提供一个适当的后续行动,我会非常高兴!谢谢,让我花几个小时回去看看!这确实是我的问题!现在一切正常!非常感谢
    
    function transformTicker(ticker) {
      var result = {};
      Object.keys(ticker).forEach((k) => {
        // Object.keys(ticker[pair]).forEach((k) => {
          // console.log(k);
          result= {
            name: k,
            a: ticker[k].a,
            b: ticker[k].b,
            c: ticker[k].c,
            v: ticker[k].v,
            p: ticker[k].p,
            t: ticker[k].t,
            l: ticker[k].l,
            h: ticker[k].h,
            o: ticker[k].o,
          }
          console.log(`[ADDED]: ${JSON.stringify(result)}`);
          return result;
        // });
      });
    }
    
    function transformTicker(ticker) {
      var result = {};
      Object.keys(ticker).forEach((k) => {
        // Object.keys(ticker[pair]).forEach((k) => {
          // console.log(k);
          result= {
            name: k,
            a: ticker[k].a,
            b: ticker[k].b,
            c: ticker[k].c,
            v: ticker[k].v,
            p: ticker[k].p,
            t: ticker[k].t,
            l: ticker[k].l,
            h: ticker[k].h,
            o: ticker[k].o,
          }
          console.log(`[ADDED]: ${JSON.stringify(result)}`);
        // });
      });
      return result;
    }