Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 阵列推送在承诺内不起作用吗?_Javascript_Reactjs - Fatal编程技术网

Javascript 阵列推送在承诺内不起作用吗?

Javascript 阵列推送在承诺内不起作用吗?,javascript,reactjs,Javascript,Reactjs,除了我不能在promise All函数中将我的值推送到我的数组外,所有功能似乎都能完美工作??我做错了什么 var reponses = []; Object.values(thequestion.answers).forEach(item => { var mars = item.mars; var getFullName = FirebaseRef.child('/users/' + mars + '/fullName').once('value'); var getA

除了我不能在promise All函数中将我的值推送到我的数组外,所有功能似乎都能完美工作??我做错了什么

var reponses = [];

Object.values(thequestion.answers).forEach(item => {
  var mars = item.mars;

  var getFullName = FirebaseRef.child('/users/' + mars + '/fullName').once('value');
  var getAvatar = FirebaseRef.child('/users/' + mars + '/avatar').once('value');
  var getDescription = FirebaseRef.child('/users/' + mars + '/description').once('value');

  // console.log(queries);
  Promise.all([getFullName, getAvatar, getDescription]).then(answer => {
    var oneanswer = {
      answer: item.answer,
    };

    reponses.push(oneanswer);
  });
  console.log('oneanswer', reponses);
});


请注意,您的
console.log
不在async流中

因此,您需要将其移动到承诺的“then”中

var reponses = [];

Object.values(thequestion.answers).forEach(item => {
  var mars = item.mars;

  var getFullName = FirebaseRef.child('/users/' + mars + '/fullName').once('value');
  var getAvatar = FirebaseRef.child('/users/' + mars + '/avatar').once('value');
  var getDescription = FirebaseRef.child('/users/' + mars + '/description').once('value');

  // console.log(queries);
  Promise.all([getFullName, getAvatar, getDescription]).then(answer => {
    var oneanswer = {
      answer: item.answer,
    };

    reponses.push(oneanswer);
    console.log('oneanswer', reponses);
    // -------^
  });
});

您是否尝试过调试器或在
.push()
的正上方添加console.log(),以确保您的承诺正在输入
。然后
是,它正在输入。调用console log时,
响应
尚未填充。如果在
push
之后调用它,它应该包含新值。这就是问题所在吗?