只有当另一个javascript/jquery完成时才执行函数
execute function only when another has finished javascript/jquery
我有一个连续运行的应用程序,并在需要时自我更新。它使用ajax调用一个php文件,该文件将检查数据库中的一些数据,如果它发生了变化,那么我们将更新屏幕。php似乎工作得很好,它的js,我有一个问题。
$(document).ready(function () {
$('.trade_window').load('signals.php?action=init', setInterval(function () {
for(var i = 1; i < 6; i++) {
console.log('market_name_' + i + " is " + $('.market_name_' + i).text().trim());
$.ajax({
url: 'signals.php?action=check¶m=' + JSON.stringify({
'market_number': i,
'market_name': ('.trade_window .market_name_' + i).text().trim(),
'trade_type': $('.trade_window .status_' + i).text().trim(),
'trade_start_price': '1.1234',
'trade_open_time': '18:21:02'
}),
type: 'GET',
success: function (result) {
if(result.trim() === "false") {
console.log("RESULT IS " + result.trim());
} else {
$('.trade_window #market_1').html(result);
setTimeout(function () {
// This is to make it a little more visible
console.log(" ");
console.log(" ");
console.log("PAUSE!!!!");
console.log(" ");
console.log(" ");
}, 5000);
}
}
});
};
}, 2000));
});
那么,在应用程序中发生的事情是有6个元素(div)在这些元素中我们有一些信息,这些与DB上的数据进行比较,如果它们不同,则需要显示DB信息。
现在上面的脚本检查每个元素,然后更新,如果需要的话,问题是ajax调用是在后台完成的,所有其他的东西都是在我们等待ajax调用完成的时候执行的,所以当他们完成的时候循环是在最后,所以只有元素6将被更新,即使元素1,2,3,4或5被改变。
我能做些什么来改变这个?是否有一个js/jquery方法,可以用来检查是否PHP文件已完成加载?
感谢您的宝贵时间。
收集您的$.ajax
调用的延迟(承诺)返回值:
var def = [];
for (var i = 1; i < 6; ++i) {
def[i - 1] = $.ajax({ ... });
}
,然后在循环外使用$.when()
等待它们全部完成:
$.when.apply($, def).done(function(r1, r2, r3, ...) {
...
});
相关文章:
- 在操作完成时执行函数
- jQuery无法正确完成提交,并在提交时执行意外操作
- 当 document.ready 中的函数完成时执行 js 函数
- 当一系列 jquery ajax 调用完成时执行一个函数(!)
- 创建一个超链接(或按钮),用于执行 python 脚本,然后在脚本完成时重定向
- 当第一个函数完成没有回调参数时执行第二个函数
- 在上一个函数完成时执行 JavaScript 函数
- 如何在 knex 事务完成时执行操作
- 使用 jQuery 完成单独函数时执行警报
- 如何将 Google 地方自动完成功能配置为仅在输入字段中至少有 n 个字母时执行请求
- 在函数完成时执行代码
- 如何限制keypress/keyup/keydown操作并仅在ajax调用完成时执行
- 如何在打印完成或取消时执行某些JavaScript
- AjaxControlToolkit自动完成:如何自动使用值并在选择值时执行某些操作
- AJAX调用未完成时停止执行JS函数
- jQuery -当所有Ajax请求完成时执行一些操作
- 如何仅在前一个单击完成时执行下一个单击
- Jquery:在一个函数完成时执行另一个函数
- 当嵌套异步函数完成时执行某些操作
- 当所有异步处理程序完成时执行javascript函数