標題說什麼。 我試圖通過AJAX「調用1」來運行導入腳本,我想通過AJAX「調用2」跟蹤導入(用於反饋目的)。 爲了給最終用戶帶來實時反饋,這些調用需要同時運行,並且「調用2」需要調用自己(遞歸)來輪詢更改。是否有可能在Magento 2後端異步觸發多個Ajax請求?
我有控制器和調用,一切正常,只是不在同一時間。 它是數據庫上的軟鎖還是別的東西?
btw我知道ajax調用的「async:true」設置。
它看起來像Magento阻止我在同一時間執行兩個控制器。任何人都可以確認嗎?
標題說什麼。 我試圖通過AJAX「調用1」來運行導入腳本,我想通過AJAX「調用2」跟蹤導入(用於反饋目的)。 爲了給最終用戶帶來實時反饋,這些調用需要同時運行,並且「調用2」需要調用自己(遞歸)來輪詢更改。是否有可能在Magento 2後端異步觸發多個Ajax請求?
我有控制器和調用,一切正常,只是不在同一時間。 它是數據庫上的軟鎖還是別的東西?
btw我知道ajax調用的「async:true」設置。
它看起來像Magento阻止我在同一時間執行兩個控制器。任何人都可以確認嗎?
好吧,我明白了。
所有我需要做的就是設置:
session_write_close();
在啓動該進口,我可以與第二AJAX調用開始輪詢前面的方法!
這可能是皺眉,但它的作品
我認爲你不能同時做兩個AJAX請求。這意味着你總是需要有一個合乎邏輯的順序,也就是說。先調用1,然後調用2。如果你想確保電話2總是在通話1後觸發,只需將其置於成功方法中即可。
像這樣:
$.ajax({
url: "test-to-call-1",
context: call-1-context
}).done(function() {
$.ajax({
url: "test-to-call-2",
context: call-2-context
}).done(function() {
Now both ajax requests are done.
And you could add the context of the first one to the second call.
});
});
如果要啓用輪詢,只需將一個setTimeout的循環中,你做第二個AJAX調用:)
像這樣:
function start_polling(counter){
if(counter < 10){ // poll maximum of 10 times.
setTimeout(function(){
counter++;
$.ajax({
url: "test-to-call-2",
context: call-2-context
}).done(function() {
start_polling(counter);
Now both ajax requests are done.
And you could add the context of the first one to the second call.
}).error(function(){
start_polling(counter);
});
}, 1000);
}
}
$.ajax({
url: "test-to-call-1",
context: call-1-context
}).done(function() {
start_polling(0)
});
我很感謝你的答案,但它不是我要找的。 我想在**導入期間給最終用戶反饋**,而不是之後。 我主要使用Symfony工作,並且在該框架內可能會有併發的AJAX調用,所以這就是爲什麼我開始構建我的想法,現在我因爲Mag2而陷入困境。 它也可能與會話鎖相關。 我試着弄明白了。 感謝您的回答! – MariusJP
啊,好的。這可能是我的一個誤解。不知道它如何與PHP框架一起工作,但是在Python中,我會在一個單獨的工作者上創建一個後臺任務。在這個任務中,我會創建一個基於可以輪詢的任務的百分比指示:)所以你看,一個稍微不同的問題可能導致完全不同的anwers;) – gabn88