Javascript 阵列推送在承诺内不起作用吗?
除了我不能在promise All函数中将我的值推送到我的数组外,所有功能似乎都能完美工作??我做错了什么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
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
之后调用它,它应该包含新值。这就是问题所在吗?