0
我有一個$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
})
}
for循環結束瞬間,讓所有項目應該叫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