我通过动态构建网址来发出多个GET
请求。
对于任何错误,我想获取response.config.url
的值,处理它,并将结果值推送到对象中。
当我只收到一个错误时,下面的代码工作正常。
如果返回多个错误,则只将最后一个错误的值推入对象。我想这是因为它会覆盖之前的那个。
我该如何预防?当有多个错误时,如何确保所有值都被推入对象?
(注意:annotation
是我从输入字段获得的字符串数组; _
是lodash)
function checkVariants(annotation) {
var lemmas = annotation.text.split(' ');
var results = [];
var words = [];
for (var i = 0; i < lemmas.length; ++i) {
var urlLemmas = encodeURIComponent(lemmas[i]).toLowerCase();
results.push(urlLemmas);
$http({
method: 'GET',
url: 'https://xxxxxxx.org/variants/' + results[i] + '.txt'
}).then(function successCallback(response) {
console.log('Success: ', response.status)
}, function errorCallback(response) {
var url = response.config.url;
words = url.substring(url.lastIndexOf("/") + 1, url.lastIndexOf("."));
_.extend(annotation, {
variants: words
});
})
}
}
答案 0 :(得分:2)
将您的variants
媒体资源添加为数组并将words
添加到其中:
$http({
method: 'GET',
url: 'https://wwwcoolservice.org/variants/' + results[i] + '.txt'
}).then(function successCallback(response) {
console.log('Success: ', response.status)
}, function errorCallback(response) {
var url = response.config.url;
words = url.substring(url.lastIndexOf("/") + 1, url.lastIndexOf("."));
if (!annotation.variants || !annotation.variants.length) { // First error: create the array
annotation.variants = [words];
} else { // next errors: add to the array
annotation.variants.push(words);
}
});
使用此解决方案,您需要检测您是否已经拥有variants
属性,因此在调用_.extend
时会有更多附加价值。
答案 1 :(得分:0)
我设法得到我想要的东西。
这里的代码仅供参考:
function checkVariants(annotation) {
var lemmas = annotation.text.split(' ');
var results = [];
var oedVars = [];
for (var i = 0; i < lemmas.length; ++i) {
var urlLemmas = encodeURIComponent(lemmas[i]).toLowerCase();
results.push(urlLemmas);
$http({
method: 'GET',
url: 'https://XXXXXX.org/variants/' + results[i] + '.txt'
}).then(function successCallback(response) {
console.log('Success: ', response.status)
}, function errorCallback(response) {
var url = response.config.url;
var words = url.substring(url.lastIndexOf("/") + 1, url.lastIndexOf("."));
oedVars.push(words);
_.extend(annotation, {
variants: oedVars
});
})
}
}