gpt4 book ai didi

javascript - promise.all 只返回第一个数据

转载 作者:行者123 更新时间:2023-11-30 12:01:02 27 4
gpt4 key购买 nike

我正在使用 bluebird promise.all api 迭代多个函数,但我似乎只从第一个函数返回数据

var _ = require('lodash');
var x = require('x-ray')();
var sentiment = require('sentiment');
var Promise = require('bluebird');

和下面的代码

 function joyPolitics() {
return new Promise(function(resolve, reject) {
x('http://www.myjoyonline.com/politics.php', 'ul.opinion-listings li', [{
title: '.head .title a',
desc: '.info',
date: '.head',
img: 'div.image-inner > a img@src',
url: '.head .title a@href',
fullStory: x('.head .title a@href', ['.main-article-section .storypane p'])
}])(function(err, obj) {
if (err) {
reject(err)
} else {
_(obj).forEach(function(story) {
var a = story.fullStory;
story.category = 'politics';
story.mood = sentiment(a.join()).score;
});
resolve(obj);
}
})
})
}
function joyEnt() {
return new Promise(function(resolve, reject) {
x('http://www.myjoyonline.com/entertainment.php', 'ul.opinion-listings li'
...
}
function execute() {
return Promise.all(joyEnt(),joyPolitics());

}

当对上面的数据调用execute时

activateCtrl.execute()
.then(function(data,data1) {
// return activateCtrl.loadToParse(data);
res.json([data,data1]);
}).catch(function(err) {
res.send(err);
})

返回数据,但data1为空

最佳答案

… Promise.all(joyEnt(),joyPolitics()); …

Promise.all接受一个数组,而不是多个参数:

Promise.all([joyEnt(),joyPolitics()]);

此外,它的结果 promise 不会满足多个值,而是满足单个数组,因此您需要调整您的 then 回调 - 或使用 spread反而。您可能还想考虑使用 Promise.join .

关于javascript - promise.all 只返回第一个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36606129/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com