Angularjs 阵列的角承诺链

Angularjs 阵列的角承诺链,angularjs,promise,angular-promise,Angularjs,Promise,Angular Promise,我有一个url数组url=[“/url/file\u 1”、“/url/file\u 2”、“/url/file\u 3”…/url/file\u n”] 和字符串变量str=”“。 创建承诺链以使用URL中所有文件的内容填充str的最佳方法是什么?可以使用$q.all。实施示例: var urls = [ /* some urls */ ]; var promises = Array(urls.length); var results = Array(urls.length); for(va

我有一个url数组
url=[“/url/file\u 1”、“/url/file\u 2”、“/url/file\u 3”…/url/file\u n”]
和字符串变量
str=”“

创建承诺链以使用
URL
中所有文件的内容填充
str
的最佳方法是什么?

可以使用
$q.all
。实施示例:

var urls = [ /* some urls */ ];
var promises = Array(urls.length);
var results = Array(urls.length);

for(var i = 0; i < urls.length; i++) {
    promises[i] = yourPromiseReturningFunction(urls[i]).then(function(result) {
        results[i] = result;
    });
}

$q.all(promises).then(function() {
    //Just an example, do whatever youw ant with your results here
    console.log(resulst.join('')); 
});
var url=[/*一些url*/];
var=Array(url.length);
var results=数组(url.length);
对于(var i=0;i

这可以用更优雅(更实用的风格)的方式来完成,这只是一个例子来说明这是如何可能的。在
$q.all
上查找可以使用
$q.all
的文档。实施示例:

var urls = [ /* some urls */ ];
var promises = Array(urls.length);
var results = Array(urls.length);

for(var i = 0; i < urls.length; i++) {
    promises[i] = yourPromiseReturningFunction(urls[i]).then(function(result) {
        results[i] = result;
    });
}

$q.all(promises).then(function() {
    //Just an example, do whatever youw ant with your results here
    console.log(resulst.join('')); 
});
var url=[/*一些url*/];
var=Array(url.length);
var results=数组(url.length);
对于(var i=0;i
这可以用更优雅(更实用的风格)的方式来完成,这只是一个例子来说明这是如何可能的。在
$q.all

上查找文档,请尝试以下操作:

var stringResult = '';
promises = [];
angular.forEach(urls, function (url) {
   promises.push($htpp({method: 'GET', url: url}))
}
$q.all(promises).then(
   function () {stringResult = stringResult.concat(res)})
尝试以下方法:

var stringResult = '';
promises = [];
angular.forEach(urls, function (url) {
   promises.push($htpp({method: 'GET', url: url}))
}
$q.all(promises).then(
   function () {stringResult = stringResult.concat(res)})
您应该使用$q.all

$q.all(urls.map(function(url){return $http.get(url)})) //create multiple requests and return the array of promises
    .then(function(results){ //an array of results
        results.forEach(function(res){ //response object https://docs.angularjs.org/api/ng/service/$http
            str += res.data; //concat strings assuming that all get calls will return string
        });
    });
您应该使用$q.all

$q.all(urls.map(function(url){return $http.get(url)})) //create multiple requests and return the array of promises
    .then(function(results){ //an array of results
        results.forEach(function(res){ //response object https://docs.angularjs.org/api/ng/service/$http
            str += res.data; //concat strings assuming that all get calls will return string
        });
    });

请记住,这将以随机顺序追加结果,并且不允许对正在解决的所有承诺作出反应请记住,这将以随机顺序追加结果,并且不允许对正在解决的所有承诺作出反应非常优雅的解决方案!也许可以添加一些文字来解释你在做什么,以及它是如何工作的,这是一个非常优雅的解决方案!也许可以添加一些文字来解释你在做什么以及它是如何工作的