У меня есть услуга $http
(или заводская).Назовите то же обслуживание несколько раз в то же время
angular.module("app")
.factory("PriceService", function ($http) {
return {
get: function (item) {
var url = "/pricing";
return $http.post(url, item);
}
}
});
Я читаю элементы из файла Excel. И каждый элемент будет вызывать услугу один раз.
for (item in excelItems) {
console.time(item.referenceId);
PriceService.get(item).then(function(response) {
console.timeEnd(item.referenceId);
// process result
}, function() {
// error
})
}
для цикла заканчивается мгновенно, так что все элементы должны вызывать PriceService
почти одновременно. Тем не менее, кажется, что пункты звонят в службу один за другим. См. Результаты консольного времени (левый столбец refereceId).
3: 2283.264ms
5: 3167.943ms
2: 3327.372ms
11: 3767.073ms
12: 3849.267ms
14: 5388.853ms
8: 15996.263ms
16: 16636.952ms
4: 17689.306ms
18: 18190.733ms
15: 19323.512ms
20: 20009.020ms
13: 23326.644ms
10: 23378.259ms
22: 24077.294ms
24: 24568.147ms
total: 24570.348ms
Есть ли способ улучшить это? Большое спасибо!
Если я понимаю, право ваши прошу вести дела в то же время? Если так, то JavaScript однопоточен. Ничто никогда не произойдет одновременно с чем-то другим. – ste2425
@ ste2425 Спасибо. Есть ли у вас какие-либо предложения по улучшению этого? – NMSL
Не слишком. Вы просто делаете сетевой звонок, чтобы у вас была задержка в работе в сети. Ваш вход в систему после того, как вы ответите назад, не учтет вашу обработку после факта. Вы можете сделать микро оптимизацию на клиенте, но если у вас проблемы с производительностью, то здесь все происходит на сервере. – ste2425