Arrays Q.all的Promise数组

Arrays Q.all的Promise数组,arrays,angularjs,request,q,angular-promise,Arrays,Angularjs,Request,Q,Angular Promise,我有一个链接数组,这是我在第一个请求中得到的。我的目标是去每个环节收集数据。所以我想对每一个请求做出承诺,将它们全部推到一个数组中,然后传递给Q.all来解决所有承诺。问题是我不能返回承诺并转到下一个链接 下面是函数,我尝试在其中发出多个请求并收集数据 function arrayPromise(linksArr){ function collectingData(elem){ var deferredNew = Q.defer(); var url = elem; r

我有一个链接数组,这是我在第一个请求中得到的。我的目标是去每个环节收集数据。所以我想对每一个请求做出承诺,将它们全部推到一个数组中,然后传递给Q.all来解决所有承诺。问题是我不能返回承诺并转到下一个链接 下面是函数,我尝试在其中发出多个请求并收集数据

function arrayPromise(linksArr){

function collectingData(elem){
    var deferredNew = Q.defer();
    var url = elem;
    request(url, function(error,response,html){
        if(error){
            deferredNew.reject(error);
        }
        var $ = cheerio.load(html);
        var title, content;

        $('.entry-title').filter(function(){
            var data = $(this);
            var title = data.text();
            items.text.push(
                {  titleof: title }
            )
        })

        $('.entry-content ').filter(function(){
            var data = $(this);
            var content = data.html();
            items.text.push(
                { contentof: content})
        })
        deferredNew.resolve(items);
    })
    console.log("Returning the promise");
    return defferedNew.promise;
}

var promiseArr;
console.log("LENGTH:");
console.log(linksArr.length);

for (var i = 0; i < linksArr.length; i++) {

    console.log(linksArr[i]);

    var tempPromise = collectingData(linksArr[i]);
    console.log(tempPromise);
    promiseArr.push(tempPromise);

};
    return promiseArr;
}

promiseArr应声明为数组:

var promiseArr = [];

如果这不能解决问题,请提供您可能看到的错误。

存在多个问题 首先是在

deferredNew.resolve(items); 项在本地范围中定义,而不是在deferredNew.resolveitems所在的范围中的任何位置定义;评估

另一个:将空数组分配给promiseArr也会有所帮助

还有一个:requesturl、functionerror、response、html没有在任何地方分配结果,并且在您认为返回promice DelferredNew.resolveitems的函数中没有返回语句

PS
还有更多错误,请检查所有函数是否返回值,例如$'...filter。。。不重新获得价值观

然后传递给Q.all来解决所有承诺-我想你误解了Q.all的功能。它不会解析传入的承诺,它会在传入数组中的所有承诺解析时解析,或者在任何一个承诺被拒绝时拒绝。我理解这一点。我认为错误可能不在Q.all中,而是在生成承诺数组的函数中。这是一个很好的观点,但没有任何变化。我没有看到任何错误。for循环中的函数似乎永远不会返回。您能更具体一点吗?你在开火吗?不,没有。看起来脚本卡在了用于注释请求函数的循环内的函数中。同时请粘贴您的请求功能。还请控制台登录您传入的arr。 deferredNew.resolve(items);