Javascript $.get()函数的执行时间
javascript $.get() function execute time
下面是我的演示代码:
doGet('../loaderDemo/1.lst');
doGet('../loaderDemo/2.lst');
doGet('../loaderDemo/3.lst');
doGet('../loaderDemo/4.lst');
doGet('../loaderDemo/5.lst');
function doGet(filename) {
$.get(filename,function (data) {
console.log(data + filename);
});
}
行"console.log(…)"可能不会按照doGet()的顺序执行,输出内容是而不是作为1的顺序。LST -> 2。LST -> 3。LST -> 4。LST -> 5.lst。
实际上每次执行的输出顺序都是随机的。
我怎么能让它按顺序输出?
谢谢你的帮助:-)
------------- 更新 -------------------
"。"lst"文件是我想加载的3D模型。我只是想按顺序加载模型,这样我就可以正确地渲染动画。那么在这种情况下哪个是最好的解决方案呢?
每个"。"Lst"文件包含一个帧的信息。在这个演示中,"console.log()"的输出必须按1的顺序排列。LST -> 2。LST -> 3。LST -> 4。LST -> 5。
jQuery $.get
返回一个Promise(各种类型)
因此,只需最少的重写,您就可以执行如下操作
doGet('../loaderDemo/1.lst')
.then(function() {
doGet('../loaderDemo/2.lst');
})
.then(function() {
doGet('../loaderDemo/3.lst');
})
.then(function() {
doGet('../loaderDemo/4.lst');
})
.then(function() {
doGet('../loaderDemo/5.lst');
});
function doGet(filename) {
// added return
return $.get(filename,function (data) {
console.log(data + filename);
});
}
但是,如果下载完成的顺序并不重要,而"处理"的顺序很重要,则可以使用jQuery.when
"等待"所有下载完成,然后按照所需的顺序处理结果
$.when(doGet('../loaderDemo/1.lst'),
doGet('../loaderDemo/2.lst'),
doGet('../loaderDemo/3.lst'),
doGet('../loaderDemo/4.lst'),
doGet('../loaderDemo/5.lst')
)
.done(function(v1, v2, v3, v4, v5) {
[].forEach.call(arguments, function(arg) {}
console.log(arg.data, arg.filename);
})
});
function doGet(filename) {
return $.get(filename)
.then(function(data) {
// need this so we can access the filename and the data for each result
return {
data: data,
filename: filename
};
});
}
欢迎来到异步编程的世界。处理此问题的最佳方法是同时调用所有5个asynch函数,但延迟执行控制台日志语句,直到它们全部完成,然后按顺序运行它们。
(当然,这是假设始终以相同的顺序运行它们非常重要。一个更好的解决方案可能是重构你的代码,这样哪一个先完成并不重要)
这里有一个关于你的问题的例子。
大多数情况下,这比任何顺序解决方案都快得多,因为它将同时运行5个调用,而不是一个接一个地运行5个调用。
return $.when(
doGet('../loaderDemo/1.lst'),
doGet('../loaderDemo/2.lst'),
doGet('../loaderDemo/3.lst'),
doGet('../loaderDemo/4.lst'),
doGet('../loaderDemo/5.lst'),
).done( function(res1, res2, res3, res4, res5 ) {
console.log(res1),
console.log(res2),
console.log(res3),
console.log(res4),
console.log(res5),
});
(我以前的编辑使用$q,但事实证明,jquery有一个内置的东西,工作原理几乎相同)
- 等待回调函数执行
- 暂停函数执行流程,直到ajax请求完成
- Bigcommerce-是否可以在函数执行后更改文本
- 如何对jquery中的未命名函数执行.call()
- 如何优化这个jquery循环的执行时间
- 等待函数执行后再继续
- mootools类型的函数将文本作为函数执行
- 不确定react.js的异步执行时间
- 停止从另一个函数执行Javascript函数
- Jquery回调函数执行多次
- 测量JavaScript函数的内存使用情况、执行时间和性能
- jQuery 设置函数执行前的等待时间
- 如何知道哪个JavaScript函数执行时间最长
- 如何结合两个jQuery函数的代码来减少执行时间?
- 如何在Safari中以微秒精度测量JavaScript函数的执行时间
- 如何检查执行javascript函数的时间
- 是否有一种方法可以看到哪些函数/执行时间最长
- Javascript $.get()函数的执行时间
- 如何让node js等待函数执行(即使需要时间),然后执行下一条语句
- 如何限制javascript中函数的执行时间