是否可以在 Magento 2 后端异步触发多个 ajax 请求?
Is it possible to fire multiple ajax requests asynchronously in Magento 2 backend?
标题说的是什么。
我正在尝试 运行 使用 AJAX "call 1" 的导入脚本,我想跟踪使用 AJAX "call 2" 的导入(出于反馈目的)。
为了向最终用户提供实时反馈,这些调用需要同时 运行 并且 "call 2" 需要调用自身(递归)以轮询更改。
我有控制器和电话,一切正常,只是不是在同一时间。
是数据库软锁还是其他原因?
顺便说一句,我知道 ajax 调用的 "async: true" 设置。
[编辑]
看起来 Magento 阻止我同时执行两个控制器。谁能证实这一点?
我认为您不能同时执行两个 AJAX 请求。这意味着您始终需要有一个逻辑顺序,a.k。首先 'call 1',然后 'call 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)
});
好吧,我想通了。
我所要做的就是设置:
session_write_close();
在启动导入的方法前面,我可以通过第二个 AJAX 调用开始轮询!
这可能不受欢迎,但它确实有效
标题说的是什么。 我正在尝试 运行 使用 AJAX "call 1" 的导入脚本,我想跟踪使用 AJAX "call 2" 的导入(出于反馈目的)。 为了向最终用户提供实时反馈,这些调用需要同时 运行 并且 "call 2" 需要调用自身(递归)以轮询更改。
我有控制器和电话,一切正常,只是不是在同一时间。 是数据库软锁还是其他原因?
顺便说一句,我知道 ajax 调用的 "async: true" 设置。
[编辑] 看起来 Magento 阻止我同时执行两个控制器。谁能证实这一点?
我认为您不能同时执行两个 AJAX 请求。这意味着您始终需要有一个逻辑顺序,a.k。首先 'call 1',然后 'call 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)
});
好吧,我想通了。
我所要做的就是设置:
session_write_close();
在启动导入的方法前面,我可以通过第二个 AJAX 调用开始轮询!
这可能不受欢迎,但它确实有效