首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何向此JavaScript函数添加超时参数?

如何向此JavaScript函数添加超时参数?
EN

Stack Overflow用户
提问于 2019-12-12 09:13:44
回答 1查看 56关注 0票数 0

我有以下JavaScript函数。

代码语言:javascript
运行
AI代码解释
复制
function ready(interval, last_wait, el, callback) {
    if (jQuery(el).length) {
        console.log("Element ready: " + el)
        setTimeout(function () {
            callback(jQuery(el));
        }, last_wait);
    } else {
        console.log("Waiting element: " + el)
        setTimeout(function () {
            ready(interval, last_wait, el, callback);
        }, interval);
    }
};

它基本上是等待DOM元素出现。如果不是,则等待更多interval毫秒。我想要的是添加一个timeout参数。如果函数总共等待timeout毫秒,而DOM元素仍然没有出现,那么什么也不做,停止等待并返回。我不能让它工作,因为函数的递归性质。我也考虑过使用全局变量,但这似乎不是正确的方法。希望有人能给我指明正确的方向。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-12 09:28:01

这对我很管用

如果您增加stopAfter,代码将运行到结论

代码语言:javascript
运行
AI代码解释
复制
var tId, stopAfter = 3
const cb = el => el.html("Callback called");
function ready(interval, last_wait, el, callback) {
  if (stopAfter === 0) {
    clearInterval(tId);
    return;
  }
  if ($(el).length) {
    clearInterval(tId);
    console.log("Element ready: " + el)
    setTimeout(function() { callback($(el)); }, last_wait);
    return;
  }
  console.log("Waiting element: " + el)
  if (!tId) tId = setInterval(function() {
    stopAfter--;
    ready(interval, last_wait, el, callback);
  }, interval);
};

// testing the above
ready(1000,2000,"#div1",cb)
setTimeout(function() {     
  $("body").append(`<div id="div1">Div1</div>`) }
,5000); 
代码语言:javascript
运行
AI代码解释
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59301151

复制
相关文章
向Bash函数传递参数
除非发生语法错误或已存在同名的只读函数,否则函数定义的退出状态为零。执行时,函数的退出状态码是在主体中执行的最后一个命令的退出状态码。
程序熵
2023/09/25
2580
向Bash函数传递参数
JavaScript 函数参数
functionName(parameter1, parameter2, parameter3) { // 要执行的代码…… }
陈不成i
2021/07/19
9210
如何向回调函数中传入其他参数
最近写JS经常会因为向回调函数中传参而头疼,今天总结一下向回调函数中传参的方法,以后的应用中就不用在到处去找了。
大江小浪
2018/07/25
2.3K0
JavaScript 函数参数
函数运行的时候,有时需要提供外部数据,不同的外部数据会得到不同的结果,这种外部数据就叫参数。
RiemannHypothesis
2022/10/28
4850
【译】 javascript 函数参数设计
本文作者:IMWeb jerytang 原文出处:IMWeb社区 未经同意,禁止转载 本文 编译 自 https://gcanti.github.io/2014/09/25/six-rea
IMWeb前端团队
2018/01/08
9640
ajax请求参数使用push循环向数组中添加请求参数
function batch(){ var dataArr = []; $('#line').each(function(){ let obj = {name : $('#name').val(),sex : $('#sex').val()}; dataArr.push(obj) }); if (dataArr.length > 0) { $.ajax({
友儿
2022/09/11
2.8K0
在 Linux/Mac 下为Python函数添加超时时间
我们在使用 requests 这类网络请求第三方库时,可以看到它有一个参数叫做timeout,就是指在网络请求发出开始计算,如果超过 timeout 还没有收到返回,就抛出超时异常。(当然存在特殊情况timeout 会失效,请看Timeouts and cancellation for humans*[1] 这篇文章中作者的举例,我们不考虑这种特殊情况)。
青南
2020/02/26
1.1K0
在 Linux/Mac 下为Python函数添加超时时间
【译】 javascript 函数参数设计
下面,我将列出 6 个方面谈谈,在排除对性能有极端要求的情况下,为什么后者是更好的方案。
IMWeb前端团队
2019/12/04
4910
JavaScript强化教程——函数参数
本文为 H5EDU 机构官方 HTML5培训 教程,主要介绍:JavaScript强化教程 —— 函数参数
IMWeb前端团队
2019/12/04
4740
(十三)给函数参数添加类型
# 一、给函数参数添加类型 说明 在我们定义函数的时候参数的类型是无法推断的,因为函数只是一段将要执行的代码 对于参数的类型只有在将要调用的时候才会知道,如果对函数参数的值没有限定的时候,就可以传递任意类型的值 如果当某个函数执行的是数学运算的时候我们传入的是一个字符串,那么就会发生不可预期的错误 例 function add(a, b) { console.log(a + b) } // 函数的参数没有类型,当我们传递其他类型的参数也是可的, 机会出现不可预期的错误 add('hellow',
老怪兽
2023/02/22
8310
JavaScript基础讲解 - 函数与参数
HTML5学堂 :函数与参数,虽然是基础知识,但是基础不扎实,就更不必谈什么“高级开发”了,毕竟复杂的功能是由多个简单功能堆积而成的。函数中的参数知识,需要注意的是形参、实参以及arguments这个“神奇的”对象。另外return可用于函数返回,如果没有设置函数的默认返回值是什么呢? 函数 什么是函数呢?简单的说,函数就是把多条语句封装起来,可以在任意地方放置,也可以在任意地方调用执行。 函数的声明 ECMAScript中的函数使用function关键字来声明,后跟一组参数以及函数体。 语法: <scri
HTML5学堂
2018/03/12
7230
如何向图形添加曲形文本
R语言数据分析指南
2023/08/18
4350
如何向图形添加曲形文本
如何向数组里添加元素
一般数组是不能添加元素的,因为数组在初始化时就已定好长度了,不能改变长度,我们如何做到向其中添加元素。
算法与编程之美
2023/01/03
3.8K0
JavaScript 函数参数-Arguments(实参)对象
上式的 x 就是square函数的 参数。每次运行的时候,需要提供这个值,否则得不到结果。
WEBING
2019/02/26
2.9K0
JavaScript 函数参数-Arguments(实参)对象
javascript 如何添加元素
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152086.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/25
1.1K0
能向入口函数传入多个参数的 QueueUserWorkItem
不啰嗦了,花一堆时间也没赶上 std::async 和 std::thread 的设计,标准库的设计真的,很优秀。 我记下这段时间里做了什么; 这里包含了把函数拆成两步调用的方法,第一步传参,第二步执行;SplitInvoke;如果我能把第一步放到A线程,第二步放到B线程,就能解决std::thread 潜在的两次拷贝和对象(Windows的窗口对象等)绑定到线程问题,就能制造一个优于 std::async和std::thread的东西。 一个向仅有一个VOID*型回调函数传入任意多个任意类型参数的方法;InvocationShim; 一个推导函数调用约定以及函数摘要的方法;FnSynopsis、CallableSynopsis; 一个仿制的 TLS;PushEx0ArgThunk; 以上这些足以为所有函数编写一个通用的 detour函数,或用来帮助处理inline hook。以下是代码:
全栈程序员站长
2022/11/08
1.4K0
Javascript设置函数参数默认值[ ES6/ES2015总结]
对于js设置函数参数默认值对于绝大多数小伙伴来说,那可以说是相当的简单的,在ES6/ES2015中语法很简单,但是有一些浏览器是不兼容的ES6/ES2015的,或许大家会说我们可以使用babel来编译支持低版本浏览器。
IT工作者
2022/01/26
1.8K0
小心此坑:Python 函数参数的默认值是可变对象
看到了有给 Python 函数参数的默认值传递可变对象,以此来加快斐波那契函数的递归速度,代码如下:
somenzz
2023/01/03
1.1K0
小心此坑:Python 函数参数的默认值是可变对象
点击加载更多

相似问题

如何向此异步函数添加超时

234

如何向此限制函数添加新参数?

20

如何向此javascript函数添加过渡

10

如何向此添加参数传递

224

javascript向函数参数添加值

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档