首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

零基础打造自己 js 类库(1)

; 这样差不多就是最终版本了,记得初学js时候,看这种代码吃力,好像在看外星语言一样,后来看多了也就习惯了。 自执行函数就是这么一事,没什么大不了。...你写 aaa , bbb , ccc 都没问题,只要你愿意的话。 以前经常看别人写代码,参数里面有callback,现在知道函数意思。...可是以前不知道,然后就觉得很困惑,作为一个英语比日语还差js玩家,感到那个啥。 其实无所谓,只是一个名字而已,你写什么都行,只要符合标识符命名规范就成。...总有人觉得,看到参数里边写了context(上下文),callback(函数)这样词汇,就觉得很困惑。 不要困惑啦,不要再惊恐啦,它就是一个名称罢了! 。。。 额,扯远了,继续回来。...参加工作后计算机感兴趣,深知初学编程之艰辛。 希望将自己所学记录下来,给初学者一点帮助。 免责声明: 博客中所有的图片素材均来自百度搜索,仅供学习交流,如有问题联系,侵立删,谢谢。

3.5K70

为什么避免使用asyncawait?

例如,一个模式可能干净、简洁或广泛使用,但如果它导致了容易出错代码,它就是一个可能会拒绝模式。这些模式双刃剑,容易搬起石头砸自己脚。首先,它是建立在一个谎言之上。...唯一可以优化地方保存函数。没有任何其他选择。看了第二个例子,也有同样想法。唯一可以优化地方保存函数。也许只是因为Promise太熟悉了,但我看了第三个例子,很快看到了一个机会。...毕竟,promises设计之初目的之一就是消除 "地狱 "问题,所以我很困惑,人们说promises会导致地狱(意思,它毕竟被称为(callbacks)地狱,而不是promises...但后来真的看到了一些promise代码,它们看起来惊人地像地狱。困惑,为什么有人会这样使用promise。最终,得出结论,有些人promise工作原理有一个非常基本误解。...在讨论这个问题之前,首先让承认,事实上不可能用async/await创造出金字塔结构地狱,所以它有这个优势。但是从来没有写过一个超过两级promise流,没有必要。

1.7K42
您找到你想要的搜索结果了吗?
是的
没有找到

破阵九解:Node和浏览器之事件循环任务队列异步顺序数据结构

6个:包括4个主队列(main queue)和两个中间队列(intermediate queue) 四个主队列由libuv提供 两个中间队列由Node.js实现 (⚠️上面这个论断根据相关资料推断...这个可能不是清楚,所以我整理了一下,如下所示: ? (备注⚠️:此图只适用于Node11.0.0版本以前情况!...>> 七队列具体作用 timers:执行满足条件 setTimeout 、setInterval ; pending callbacks: 检索新 I/O 事件;执行 I/O 相关...idle:仅仅供给Node系统内部使用 prepare:仅仅供给Node系统内部使用 poll:检索新 I/O 事件;执行 I/O 相关(几乎所有情况下,除了关闭函数,它们由计时器和...(红黑树时间复杂度O(lg(n)) ) setImmediate:函数保存在链表中,每次Tick只执行链表中一个函数

1.1K20

了不起函数

关于js函数,在各大平台已经被写烂了,也看了很多别的大神写帖子,也在想怎么可以比较明白这个东西讲明白,今天就尝试一下,认真看完,相信有一些用处。...想搞明白函数之前,先看懂下面说这段话, 有几个概念需要搞明白js同步和异步,或者叫阻塞和延迟,这就是为什么同步函数有概率卡死,说直白一些,同步就是代码由上而下执行,中间如果有问题,那就等着...,直到问题解决掉代码才会接着执行,但是我们在写js过程中,其实很少有这种情况,原因js本身就是一个异步编程语言,所谓异步就是你慢没事,跳过你,你啥时候好了,你再执行,这句话反映到代码上就是延迟式编程也就是异步编程...,已经没有微任务可以执行了,上面这段话提供信息和今天要说函数有很大关系,但是因为不是讲事件循环和宏微任务,所以不展开说,下面说为什么一定要有函数 函数:正常函数由外往内传递参数进行使用参数...,函数拿到参数之后反过来调用外部函数一个过程,再说简单一点,就是一个函数调用另一个函数,另一个函数参数函数形参,如果你觉得有点绕,我们开始写代码 代码演示: setTimeout(

1.2K20

SAP UI5 初学者教程之三:开始接触第一个 SAP UI5 控件 试读版

建议零基础或者 SAP UI5 知之甚少初学者,按照顺序从第一个步骤开始循序渐进地学习,把这些代码下载到本地,配合教程文字讲解,自己动手,以加深理解。...也就是说,这个占位符 div 标签,扮演一个容器角色,容纳其他通过 JavaScript 代码在运行时创建 SAP UI5 控件。...第二个参数一个函数,当 sap.ui.define 成功加载所需库文件之后,会自动调用这个函数,并将加载成功库文件实现,作为输入参数,传递给函数。...在我们这个例子里,函数代码第三行指定 function 函数,输入参数 Text,即是 sap.ui.define 成功加载 sap.m.Text 库之后传递给函数参数。...关于其他关键点详细介绍,参考文章:SAP UI5 初学者教程之三:开始接触第一个 SAP UI5 控件

30330

「前端进阶」从多线程角度来看 Event Loop

引子 几乎在每一本JS相关书籍中,都会说JS 单线程JS通过事件队列 (EventLoop)方式来实现异步。...很多初学JS的人来说,根本搞不清楚单线程JS为什么拥有 异步能力,所以,试图从 进程、 线程角度来解释这个问题。 CPU ? 算机核心 CPU,它承担了所有的计算任务。...请求 当请求完成时,若有函数,通知事件触发线程 当我们了解了渲染进程包含这些线程后,我们思考两个问题: 为什么 javascript 单线程 为什么 GUI 渲染线程 JS 引擎线程互斥 为什么...当代码执行到 setTimeout/setInterval时,实际上 JS引擎线程通知 定时触发器线程,间隔一个时间后,会触发一个事件, 而 定时触发器线程在接收到这个消息后,会在等待时间后,将回事件放入到由...当代码执行到 XHR/fetch时,实际上 JS引擎线程通知 异步http请求线程,发送一个网络请求,并制定请求完成后事件, 而 异步http请求线程在接收到这个消息后,会在请求成功后,将回事件放入到由

64210

【动画演示】:事件循环 形象深动(JavaScript)

这个任务中,我们要等待30秒,然后才能执行接下来要做事情(JS 默认运行在浏览器主线程上,所以整个UI都卡住了)。 幸运,浏览器提供了 JS 引擎本身没有提供一些特性:Web API。...调用堆栈JS引擎一部分,这不是浏览器特有的。堆栈里面的顺序先进后出,当函数返回一个值时,它会从堆栈中弹出。 response函数返回一个setTimeout函数。...不会立即添加到调用堆栈中,而是会传递到队列中。 这可能一个令人困惑部分:它并不意味着在1000ms之后将回函数添加到调用堆栈中,它只是在1000ms后添加到队列中。...函数被添加到调用堆栈中,被调用,并返回一个值,然后从堆栈中弹出。 通过动画演示看起来很有趣,但还是需要重复多看几遍,才能更好理解它们之间关系。...小智,前端技术保持学习爱好者。我会经常分享自己所学所看干货,在进阶路上,共勉!

98220

面试官:为什么“false == ”都返回true?

可能还不够了解!有时真的想不通它是如何工作,看完这5个奇怪问题,你就知道为啥这么说了,你知道这些古怪问题正确答案吗? 我们现在开始吧。...朋友们,不要惊讶这确实是正确答案。 只要我们有了相等比较和相同知识,我们就能完全理解它是怎么一事了。...[]) // true 让简要解释一下它是如何工作。 当我们遇到一个布尔值和一个对象进行比较时,会将这两个值转换为数字进行最后比较。 所以它会经历这些步骤。 // 1....想你猜对了,答案“fatfish”。不,不是!答案“medium”。 这是因为在“try….catch….finally”语句中,finally子句无论是否抛出异常都会被执行。...请问‘{}’最终结果吗? 不幸,这不是我们想象那样。未定义最后赢家。 因为‘{}’fn函数一个包含块,所以它等价于下面的代码

92510

JavaScript 运行机制详解:再谈Event Loop

一年前,写了一篇《什么 Event Loop?》,谈了Event Loop理解。...作为浏览器脚本语言,JavaScript主要用途用户互动,以及操作DOM。这决定了它只能单线程,否则会带来复杂同步问题。...三、事件和函数 "任务队列"一个事件队列(也可以理解成消息队列),IO设备完成一项任务,就在"任务队列"中添加一个事件,表示相关异步任务可以进入"执行栈"了。...要是当前代码耗时很长,有可能要等很久,所以并没有办法保证,函数一定会在setTimeout()指定时间执行。...令人困惑,Node.js文档中称,setImmediate指定函数,总是排在setTimeout前面。实际上,这种情况只发生在递归调用时候。

1K70

js培训课程_java前端培训班

但是js单线程执行,它并没有新开一个线程等到1秒后执行该线程。而是将回函数放在setTimeout队列里。即使1秒时间到了,也要在执行完当前代码之后,才调用回。...js中异步实现四种方式:函数、事件监听、发布订阅、promise。 所谓函数,就是把任务第二段单独写在一个函数里面,等到重新执行这个任务时候,就直接调用这个函数。...使用回函数写法,往往导致代码形式可读性差,难以维护。为了解决这个问题,jquery提供了Deferred模块。当然还有其他js库也有提供相关工具。...曾经为了一个地图相关项目,很多地图相关js代码,但是没有用模块化,找个函数找半天,还不一定找。...Js这门语言其实是初学者不容易掌握,网上有的言论说js容易学,其实个人觉得js并不容易学。

1.2K10

分享 10 个前端开发者需要知道 JS 技巧

Promise 地狱 Promise 提供了一种优雅方式来处理 JavaScript 中异步操作。这也是避免“地狱”解决方案之一。但是并没有真正理解它含义,所以我写了这个代码片段。...给一个函数设置太多参数 当一个函数参数太多时,它可读性就会降低,甚至,让我们想知道如何正确传递参数。 例子 我们想要获取用户一些基本信息,比如姓名、性别、年龄等。...无意义代码注释 与其不写代码注释,也不要写无意义代码注释,因为这会浪费你时间。 你不妨解释一下“a”含义或使用有意义变量名!...// ❌ const mw = 375 朋友,不要向我学习,你应该给变量一个适当且有意义名称。...其实,这种担心完全没有必要,因为以后用可能性很小。就算以后会用到,也可以通过‘git’来追溯。 10. 超过一千行组件代码 一个组件中编写了超过一千行代码

41840

手写Express.js源码

express.js里面就加了注释,这个函数http.createServer函数。...这个例子因为只需要两个动词,就简化了,直接用数组了。这段代码其实给app创建了跟每个动词同名函数,所有动词处理函数都是一样,都是去router里面的对应方法来处理。...这段代码来说是比较奇怪,我们在执行new Router()时候其实执行new proto(),new proto()并不是奇怪地方,奇怪他设置原型方式。...绕了一大圈,其实就是JS面向对象使用,给router添加类方法,但是为什么使用这么绕方式,而不是像我上面那个Class那样用呢?这就不是清楚了,可能有什么历史原因吧。...Express主要工作将http.createServer函数拆出来了,构建了一个路由结构Router。 这个路由结构由很多层layer组成。 一个中间件就是一个layer。

5.4K30

如何理解JavaScript中this

JavaScript中 this 对于初学者来说是个难点,对于老手也会困惑。之前有一个小伙伴一直问我this相关问题,所以今天抽出点时间深入带大家理解this。...希望通过理解能够对正在处于this困惑你指引方法,让你再也不用怕JavaScript中this了,让你明白在各种情况下使用this。...说极端点,如果你编写 JS 采用函数式写法,而不是面向对象式,你所有的代码里 this 会少很多,甚至没有。...下面将通过代码例子一一探讨每种情况如何发生,同时给出让this获取正确值方法。 函数可以在一个对象里定义并将其作为自己当前上下文环境,也可以被其他对象调用,从而将上下文环境换成那个对象。...使用this方法被用作函数时 当使用this方法作为函数传给其他函数时,这种情况就有点棘手。

4.1K21

JavaScript 异步执行学习笔记 - 什么事件循环 Event loop?

但是大多数 JS 开发人员从来没有真正仔细考虑过它是如何以及为什么会出现在他们程序中,或者探索各种其他方法来处理它。足够好方法一直不起眼函数。直到今天,许多人仍坚持认为已绰绰有余。...这似乎一个疯狂主张,吧?事实上,这是非常正确JS 引擎本身从来没有做过任何事情,只是在任何给定时刻,在被要求时执行你程序单个块。 被谁要求执行呢?这个问题关键。...因此,例如,当您 JS 程序发出 Ajax 请求以从服务器获取一些数据时,您在函数中设置响应代码(通常称为),JS 引擎告诉托管环境,“嘿,现在将暂停执行,但是每当您完成该网络请求并且您有一些数据时...然后浏览器被设置为监听来自网络响应,当它有东西给你时,浏览器将回函数插入到事件循环中,以此来调度函数执行。 那么什么事件循环呢? 让我们首先通过一些假代码来概念化它。...这些事件函数。 重要要注意 setTimeout(…) 不会将您放在事件循环队列中。

1.5K30

小心这个陷阱: 为什么JS every()对空数组总返回 true

理解中,认为函数必须被调用并返回true , every() 才会返回 true ,但实际上并非如此。...对于一个空数组, every() 无论函数是什么都会返回 true ,因为那个函数从未被调用过。...这只能发生唯一原因如果函数没有被调用,而 every() 默认值 true 。但是,为什么在没有值来运行函数时,空数组会返回 true 给 every() 呢?...如果数组中没有任何项目,那么就没有机会执行函数,因此,该方法无法返回 false 。 现在问题:为什么 every() 会表现出这样行为?...如果你也这个行为感到困惑,那么建议你改变阅读 every() 调用方式。不要把 every() 理解为“这个数组中每一项是否都符合这个条件?”

17720

关于js函数callback

原创作者:Cayley,京程一灯特邀作者 Cayley 一个不断努力学习女程序员 前言 其实一直很困惑关于jscallback,困惑原因,学习中这块看资料少,但是平时又经常见,偶尔复制一下前人代码...以上解释Google得出解释,非常清晰简明,有时候觉得英文理解要比翻译成中文二次理解更清楚 来看几个经典函数代码敢保证你一定用过他们 ? 异步请求函数 ?...同步例子 所以同步、异步并没有直接联系,只是一种实现方式,既可以有同步,也可以有异步,还可以有事件处理调和延迟函数,这些在我们工作中有很多使用场景 所以其实并不是我们不认识函数...,而是我们都萦绕在了这个“callback“ 这个词上,当你在一个函数中看到它是就会困惑,其实它只是一个形参名字而已。...1.关于函数js单线程以及js异步机制 我们都知道js单线程,这种设计模式给我们带来了很多方便之处,我们不需要考虑各个线程之间通信,也不需要写很多烧脑代码,也就是说js引擎只能一件一件事去完成和执行相关操作

5.6K50

第七篇:React-Hooks 设计动机工作模式(下)

useEffect 快速上手 useEffect 可以接收两个参数,分别是函数依赖数组。...仅在挂载阶段和卸载阶段执行副作用:传入函数,且这个函数返回值一个函数,同时传入一个空数组。假如函数本身记为 A, 返回函数记为 B,那么将在挂载阶段执行 A,卸载阶段执行 B。...每一次渲染都触发,且卸载阶段也会被触发副作用:传入函数,且这个函数返回值一个函数,同时不传第二个参数。...状态复用:Hooks 将复杂问题变简单 过去我们复用状态逻辑,靠 HOC(高阶组件)和 Render Props 这些组件设计模式,这是因为 React 在原生层面并没有为我们提供相关途径。...对于组件状态复用这个问题包括 HOC、Render Props 和自定义 Hook,现在预期“知道有这回事就可以了”。如果你实在着急,可以先通过文档中相关内容简单了解一下。

81710

python异步并发框架

并发并行 好了,让我们先把纠结异步放下,来看看另外两个容易混淆概念。 估计您已经从视频里听了办港澳通行证惨痛经历了,这里就不重复了,但仍然用这个例子来解释一下并发和并行概念吧。...但是我们可以通过它看到一个异步框架应该有的东西: 用于创建框架契合、非阻塞 I/O 对象接口有一个主循环,用户可以启动它用户可以在关心事件发生时,执行自己代码 函数和 Tornado 让我们以...其中 add_handler() 调用就是——认为—— Tornado 经典用法,也就是注册函数。... yield 中,endpoint.connect() 返回一个 Deferred 对象,其函数参数才是前面的 client 对象。...asyncio 作为又一个异步并发框架,与其他现有框架差别并不大:主循环类似于 Twisted  reactor,Future 函数进行封装类似于 Deferred,可选微线程类似于 inlineCallbacks

2.4K10

Ajax技术详解(上)

JSONP理念就是,服务端约定好了一个函数名,服务端接收到请求后,将返回一段Javascript,在这段Javascript代码中调用约定好函数,并且将数据作为参数进行传递。...当网页接收到这段Javascript代码后,就会执行这个函数,这时数据已经成功传输到客户端了。...,服务端约定好了一个函数名,服务端接收到请求后,将返回一段Javascript, // 在这段Javascript代码中调用约定好回掉函数,并且将数据作为参数进行传递. // 当网页接收到这段Javascript...当网页接收到这段Javascript代码后,就会执行这个函数,这时数据已经成功传输到客户端了。...: 若需要请求多个接口,那就意味着需要多次发送ajax请求,那写出来代码光缩进看的人都恶心了,这个问题被称之为地狱,若在函数中进行带逻辑判断写出来代码可读性和可维护性更是难以操控。

1.9K20
领券