gpt4 book ai didi

javascript - setTimeout 没有按预期工作

转载 作者:行者123 更新时间:2023-11-30 08:34:15 25 4
gpt4 key购买 nike

在我的应用程序中,我使用 ajax 向下滚动功能加载用户帖子。

for循环迭代耗时过长,浏览器卡死直到显示结果。所以我实现了一个 setTimeout 方法来解决这个问题,但由于某种原因,流程在调试时没有进入 setTimeout 方法。

而且页面是空白的,没有呈现数据。

  success : function(responseJson) {
$("#loadingdata").toggle();
enableScrolling();

if($.isEmptyObject(responseJson)){
$("#noMorePosts").toggle();
disableScrolling();
paginationComplete=true;
}

$.each(responseJson, function (index) {
(function(index) {
setTimeout(function(index) { //the flow doesn't move inside this
var resp_JSON=responseJson[index];
var dateObj=resp_JSON.postCreationTime;
resp_JSON.postCreationTime = moment(dateObj).format("h:mm a, ddd, MMM Do YY");
var timeago = moment(dateObj).fromNow();
resp_JSON.timeago = timeago;
resp_JSON.username=userName;
var post_template = $('#homepostcontainertemplate').html();
Mustache.parse(post_template);
var post_info = Mustache.to_html(post_template, resp_JSON);
$('#homepublisherpostsdiv').append(post_info);
$('div').linkify();
});
})(index);
});

当流程到达 setTimeout 时,它命中的下一个代码是 jquery 库

enter image description here

我做得对还是漏掉了什么?

注意:我从服务器获取的 responseJson 数据正常。如果没有 setTimeout,数据将加载到页面上。

最佳答案

setTimeout 采用无参数函数 ( https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout ),因此将 index 作为参数有点奇怪。我怀疑 index 未定义,因此 responseJson[index] 抛出了绑定(bind)异常(根据 Niloct 的评论显示的 console.log(1) 证明)。如果您将代码更改为:

    $.each(responseJson, function (index) {     
setTimeout(function() { // no index in the argument list
var resp_JSON=responseJson[index];
var dateObj=resp_JSON.postCreationTime;
resp_JSON.postCreationTime = moment(dateObj).format("h:mm a, ddd, MMM Do YY");
var timeago = moment(dateObj).fromNow();
resp_JSON.timeago = timeago;
resp_JSON.username=userName;
var post_template = $('#homepostcontainertemplate').html();
Mustache.parse(post_template);
var post_info = Mustache.to_html(post_template, resp_JSON);
$('#homepublisherpostsdiv').append(post_info);
$('div').linkify();
});
});

我怀疑它会起作用。

(编辑以考虑 jjaulimsing 关于不需要封装函数的评论。)

关于javascript - setTimeout 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33464467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com