Arrays NodeJS async/await:为什么我的数组在async/await回调中变为1?

Arrays NodeJS async/await:为什么我的数组在async/await回调中变为1?,arrays,node.js,callback,async-await,Arrays,Node.js,Callback,Async Await,标题中的问题很简单。。。我不知道发生了什么事。 我有一个promise,然后是一个async/await函数从promise回调值,但是promise中生成的数组不是正确的值,而是一个普通的“1” 这是我的密码: var async = require('async'); var request = require('request'); var _ = require('underscore'); var getTickerList = new Promise

标题中的问题很简单。。。我不知道发生了什么事。 我有一个promise,然后是一个async/await函数从promise回调值,但是promise中生成的数组不是正确的值,而是一个普通的“1”

这是我的密码:

    var async = require('async');
    var request = require('request');
    var _ = require('underscore');

    var getTickerList = new Promise((resolve, reject) => {
      var tickerArr = [];
      request({
        url: 'https://api.kraken.com/0/public/AssetPairs',
        json: true
      }, (error, response, body) => {

        var jsonObject = body;
        _.map(jsonObject, function(content) {
          _.map(content, function(data) {
            if (data.altname.indexOf('EUR') !== -1 || data.altname.indexOf('USD') !== -1)
              resolve(tickerArr.push(data.altname));
              // resolve(tickerArr = [1, 2, 3, 4, 5, 6]);
          });
        });
        console.log(tickerArr);
      })
    });


    async function exec() {
      var tickerList = await getTickerList;
      debugger;
      console.log(tickerList);
    }

exec()
我试图避免所有对请求进行操作的函数,只是简单地给出了一个解析(tickerar=[1,2,3,4,5,6],它正确地显示了,所以我猜是uu.map操作的某个部分干扰了流程,但是如何?在哪里

var async = require('async');
var request = require('request');
var _ = require('underscore');

var getTickerList = new Promise((resolve, reject) => {
  var tickerArr = [];
  request({
    url: 'https://api.kraken.com/0/public/AssetPairs',
    json: true
  }, (error, response, body) => {

    // var jsonObject = body;
    // _.map(jsonObject, function(content) {
    //   _.map(content, function(data) {
    //     if (data.altname.indexOf('EUR') !== -1 || data.altname.indexOf('USD') !== -1)
    //       resolve(tickerArr.push(data.altname));
          resolve(tickerArr = [1, 2, 3, 4, 5, 6]);
    //   });
    // });
    console.log(tickerArr);
  })
});


async function exec() {
  var tickerList = await getTickerList;
  debugger;
  console.log(tickerList);
}
知道这里发生了什么吗?最后,我将把promise导出到一个main,它将保持为一个模块


提前感谢!

数组#push()
返回数组的
长度
在附加函数调用参数中提供的值后,它不会返回修改后的数组。您的第一个
解析()
是唯一一个得到
wait
'ed的元素,由于推送第一个元素后
长度将是
1
,这就是得到解析的值。

如果您的节点版本支持
async
,则无需导入任何内容,
async
是语言的一部分,如
如果未删除函数中的
async
部分,则删除
var async=require('async')
part.Done!再次感谢,它看起来确实更好了。不过问题仍然存在……好吧,所以基本上我需要在阵列完全构建后调用resolve:而不是控制台日志,我可以控制它谢谢Patrick!它工作得很好:
resolve(tickerar);
正确,而不是控制台日志!