Javascript jQuery是确保一个函数先于所有其他函数运行的最佳方法
我想读一个文本文件,把它的内容放到一个变量中,然后到处使用这个变量Javascript jQuery是确保一个函数先于所有其他函数运行的最佳方法,javascript,jquery,Javascript,Jquery,我想读一个文本文件,把它的内容放到一个变量中,然后到处使用这个变量 var latest_date = ""; $.get('/data/latest_data.txt', function(data) { latest_date = data; // eg "20180102" }, 'text'); // and lots of similar functions like this $(function() { $.getJSON('../data/' + latest_date
var latest_date = "";
$.get('/data/latest_data.txt', function(data) {
latest_date = data; // eg "20180102"
}, 'text');
// and lots of similar functions like this
$(function() {
$.getJSON('../data/' + latest_date + '/overview.json', function(data){
$('#overview').DataTable(data);
});
});
但是,其他函数将在latest_date
变量获得正确值之前运行。如何确保$.get
函数在其他任何操作之前运行
这与这个问题类似,但我有很多函数。我不能把它们都作为初始函数的回调。我也不愿意在所有函数中添加超时。有更好的方法吗?您可以在get方法返回的jqXHR上使用Promise对象。例如:
var promise = $.get('/data/latest_data.txt', 'text').promise();
promise.then(function (latest_date) {
$.getJSON('../data/' + latest_date + '/overview.json', function (data) {
$('#overview').DataTable(data);
});
});
您可以在get方法返回的jqXHR上使用Promise对象。例如:
var promise = $.get('/data/latest_data.txt', 'text').promise();
promise.then(function (latest_date) {
$.getJSON('../data/' + latest_date + '/overview.json', function (data) {
$('#overview').DataTable(data);
});
});
您可以使用一个事件,然后附加多个侦听器来调用加载文件后需要调用的函数: 第一个请求完成时
窗口
对象上的Dispatch事件:
var latest_date = "";
$.get('/data/latest_data.txt', function(data) {
latest_date = data; // eg "20180102"
window.dispatchEvent(new Event('content:loaded'))
}, 'text');
侦听事件以调用其他GET
window.addEventListener('content:loaded', function() {
$.getJSON('../data/' + latest_date + '/overview.json', function(data){
$('#overview').DataTable(data);
});
});
如果您想避免使用全局变量,也可以在事件中发送最新\u日期
变量:
window.dispatchEvent(new CustomEvent('content:loaded', {
detail: {
latest_date: 'date',
}
}));
window.addEventListener('content:loaded', function(e) {
console.log(e.detail.latest_date); // = 'date'
});
阅读有关事件的更多信息您可以使用一个事件,然后附加多个侦听器来调用加载文件后需要调用的函数: 第一个请求完成时
窗口
对象上的Dispatch事件:
var latest_date = "";
$.get('/data/latest_data.txt', function(data) {
latest_date = data; // eg "20180102"
window.dispatchEvent(new Event('content:loaded'))
}, 'text');
侦听事件以调用其他GET
window.addEventListener('content:loaded', function() {
$.getJSON('../data/' + latest_date + '/overview.json', function(data){
$('#overview').DataTable(data);
});
});
如果您想避免使用全局变量,也可以在事件中发送最新\u日期
变量:
window.dispatchEvent(new CustomEvent('content:loaded', {
detail: {
latest_date: 'date',
}
}));
window.addEventListener('content:loaded', function(e) {
console.log(e.detail.latest_date); // = 'date'
});
阅读有关事件的更多信息其他函数是否真的需要在文档中执行。准备就绪,或者它们可以在以后运行?另外,为什么不将第二个函数封装在第一个函数中?从你提出的逻辑来看,它们为什么需要分开是毫无意义的。@Tiramonium,我认为是的,只要它们运行。我是web开发人员,这些函数只是从软件包教程中复制的。@Tiramonium,我只是将第一个函数作为变量定义的一部分。然后,该全局变量被用作到处使用的包共享变量。听起来javascript承诺是您所追求的。其他函数真的需要在
文档中执行吗?准备好了吗?或者可以在以后运行吗?另外,为什么不将第二个函数封装在第一个函数中?从你提出的逻辑来看,它们为什么需要分开是毫无意义的。@Tiramonium,我认为是的,只要它们运行。我是web开发人员,这些函数只是从软件包教程中复制的。@Tiramonium,我只是将第一个函数作为变量定义的一部分。然后,该全局变量被用作所有地方都使用的包共享变量。听起来javascript承诺就是你所追求的。同意…最好的解决方案和它的初衷是延迟对象。同意…最好的解决方案和它的初衷是延迟对象。。