以点菜吃饭为例子:去饭堂点菜吃饭需要排队等待,在这个过程中,阿姨每次只能接待一个人,“点菜-阿姨抖勺装菜-把饭菜给到你”这个过程中阿姨并不能接收其他人的点菜,这个就是阻塞 I/O;而去餐馆点菜吃饭,去到餐馆就可以跟服务员你要吃番茄炒蛋,服务员记下来之后交给后厨,这时候来了另一桌人就把服务员招呼过去说想吃小龙虾,也就是说,在把菜给你上上来之前服务员接收了其他人的点菜,那这个就是非阻塞型 I/O。
版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/article/details/51516121
在前端开发中,我们经常需要与后端服务器进行数据交互。Flyio 是一个基于 Promise 的、支持浏览器和 Node.js 的网络库,它提供了简洁的 API 和丰富的功能,帮助我们轻松处理 HTTP 请求和响应。本文将介绍 Flyio 的基本使用方法,包括安装、发起 GET 和 POST 请求、处理响应数据以及错误处理。
团队最近将两个项目迁移至 degg 2.0 中,两个项目均出现比较严重的内存泄漏问题,此处以本人维护的埋点服务为例进行排查。服务上线后内存增长如下图,其中红框为 degg 2.0 线上运行的时间窗口,在短短 36 小时内,内存已经增长到 50%,而平时内存稳定在 20%-30%,可知十之八九出现了内存泄漏。
在js开发中,调试错误是一个比较头疼的事,又不像java的debug那么方便,定位错误往往不是那么容易,除非对代码熟悉无比,但即使是自己写的代码,功能一复杂,时间一长,再想快速定位问题,至少我现在是比较头疼的。此时,如果有一个比较友好的错误提示,那解决问题的效率将大大提高。
我们将基于localStorage原始api进行扩展,让其支持失效时间,操作完成后的回调。在文章的最后,我将给出库的完成代码,接下来我们就一步步实现吧。
2、TypeError(类型错误):变量或参数不是预期类型,或调用对象不存在的属性方法。错误之前的代码会执行,之后代码不会执行。
随着 ES6 标准的出现,给我们带来了一个新的异步解决方案 Promise。目前绝大多数 JavaScript 新增的异步 API 无论是在浏览器端还是 Node.js 服务端都是基于 Promise 构建的,以前基于 Callback 形式的也有解决方案将其转为 Promise。
Vue 2.0 之后官方推荐使用 axios 来完成前端的网络请求,不再推荐使用 vue-resource 了。下面我们安装使用 axios,来完成的常见的 get ,post 请求。并解决常见的跨域问题。 而axios的强大包括以下几点:
更新说明:对文章排版以及内容格式做了调整。 更新时间:2022-05-04 最近做了两个小程序,业务相对比较简单,关于公益方面的,收获颇多,其中感觉在开发中明显提升开发效率以及减少代码量的就是request的封装,下面稍稍做个总结。 通用封装 在utils文件夹下新建两个文件,config.js以及request.js,代码分别如下。 module.exports = { appid: "wxcXXXXXXXXXXXXXX349f", API_B
假设我们的使用场景是:通过右键菜单(这里以最简单的一级菜单为例),调用一个接口,然后解析后将数据拷贝到剪切板,最后我们可以直接使用这个数据
在前后端开发过程中,常常会遇到前后端进度不一致的情况,如果前端停下来等后端接口调试完再继续开发会大大降低前端的开发效率。Mock.js 是一款成熟强大的接口模拟工具,能够生成随机数据,拦截 Ajax 请求并返回,真正做到前后端分离。
本文来自 AirCloud 的知乎投稿:https://zhuanlan.zhihu.com/p/104299612
AST 是一个非常基础但是同时非常重要的知识点,我们熟知的 TypeScript、babel、webpack、vue-cli 都是依赖 AST 进行开发的。本文将通过 AST 与前端工程化的实战向大家展示 AST 的强大以及重要性。
全栈开发是指同时掌握前端与后端技术的开发方式,多端开发则涵盖Web、移动端和桌面端。全栈多端开发旨在提高开发效率,实现跨平台应用。前端全栈开发者不仅要熟练掌握HTML、CSS、JavaScript,还需要掌握现代前端框架、Node.js以及各种构建工具。
Promise in js 回调函数真正的问题在于他剥夺了我们使用 return 和 throw 这些关键字的能力。而 Promise 很好地解决了这一切。 2015 年 6 月,ECMAScript 6 的正式版 终于发布了。 ECMAScript 是 JavaScript 语言的国际标准,JavaScript 是 ECMAScript 的实现。ES6 的目标,是使得 JavaScript 语言可以用来编写大型的复杂的应用程序,成为企业级开发语言。 概念 ES6 原生提供了 Promise 对象。 所谓
ES2017 标准引入了 async 函数,使得异步操作变得更加方便。 async 函数是什么?一句话,它就是 Generator 函数的语法糖。 前文有一个 Generator 函数,依次读取两个文件。
昨日我们已经设计了一个简单的功能页面,但是里面显示的数据是假的固定死的,主要是为了展示功能实现后的实际效果。这个也就是大部分前端程序员在开发中遇到的一个阶段,前端开发完成就差后端给数据,但是后端有可能还没开发完成,客户又想看实际什么效果那么就得造一点假数据来填充页面,这样给客户看开发成果就比较直观,当然现在前端老哥办法多,就算后端api还未开发完成,也能使用一些模拟数据接口工具,比如mock、json-server等工具,模拟一些数据接口返回数据,便于前端程序正常运行和测试,等到后端开发完成就替换为真实接口即可。所以说前后端分离也有这个好处,就是能自己开发完成后不需要等待后端,提升了开发效率,当然实际过程中就算前后端分离,但是前后端联调也是一言难尽啊。这个咱在这就不说了。
通过Chrome的开发者工具Network,筛选ws,找到websocket的连接,进行第一步 分析。
用户把 JSON 数据 POST 给服务器,服务器再把数据中的 msg 取出来,返回给用户
一比较就会发现,async函数就是将 Generator 函数的星号(*)替换成async,将yield替换成await,仅此而已。
在互联网时代,数据是金钱的来源。然而,要从海量的网页中提取需要的数据并不容易。本文将带你了解如何使用Node.js编写简易爬虫程序,帮助你轻松获取并处理JSON数据,让你不再为数据发愁。
不支持defer属性的浏览器:defer、script、load 支持defer属性的浏览器:script、defer、load 3.2 动态添加script标签,添加到head中比添加到body中安全 3.3 XHR动态脚本注入兼容性好,但不能跨域
在互联网时代,图片是信息传递和展示的重要组成部分,而提取网页中的图片数据对于一些项目和需求来说尤为重要。本文将详细介绍如何使用Node.js编写爬虫程序,实现网页图片的批量爬取,帮助您轻松获得所需的图片数据,并揭示一些实用技巧和注意事项。
Webpack是实现我们前端项目工程化的基础,但其实她的用处远不仅仅如此,我们可以通过Webpack来帮我们做一些自动化的事情。首先我们要了解require.context()这个API
process 模块是 nodejs 提供给开发者用来和当前进程交互的工具,它的提供了很多实用的 API。从文档出发,管中窥豹,进一步认识和学习 process 模块:
Hi,大家好,我是麦洛,今天带大家来了解一下我最近使用的uniCloud,简单谈一谈我的一些理解,这篇文章主要向大家介绍一下以下内容
在我司线上运行的是近亿级别的广告页面,这样线上如果裸奔,出现了什么问题不知道,后置在业务端发现,被业务方询问,这种场景很尴尬。
这篇文章是我的好朋友广胤所写,里面记录了我们2018年探索的前端监控体系的历程,由于在建设完后的我离职了,后续也没有继续能和广胤一起更进一步的探索,还是有一些些遗憾。还记得我第一次进入「兑吧」的时候,我就在简历里描述了错误监控之类的项目,其实当时我并没有在一个公司进行过实践,这大概是之前在网易的时候,闲来没事,进行的自我探索。然后进入「兑吧」后,没想到当时公司正好缺少这一块的基建,于是 TL 就让我和广胤负责了这块项目,也是这次经历让我从实习阶段就正式踏入了前端基础建设的道路,还是非常感谢这一次的机会,让我从单一的业务开发人员,转化到了结构型开发人员。记得在开发的项目的那一个月中,除了吃饭,或者和广胤讨论项目的进度问题,近乎一种忘我的开发状态。
作者简介:slashhuang 研究型程序员 现就职于爱屋吉屋 Promise已经成为处理Node.js异步流程的标配技术。 V8的async/await语法构筑在Promise之上、处理generator的co模块基于Promise实现。 处理http请求的axios、gulp4的构建流程、主流的测试框架mocha/ava等等都围绕Promise为开发者量身打造。 Promise的核心特点在于异步流程chaining、状态存储、then/catch条件分支明确、microtask处理等等。 为了对异步流程
笔者负责的是京喜的前端某业务,长期受到大量异常的困扰,又常常找不到原因。有时异常一下暴涨,又降了回去,定位不到问题,深受其扰。经过长时间的沉淀,分析总结出了一套结论和方法。
pwa-之service worker 基本概念 pwa-之service worker 离线文件处理
这一篇我们来看一个开源的组件:ajaxpro。虽然这是一个比较老的组件,不过实现思想和源码还是值得我们学习的。通过上一篇的介绍,我们知道要调用页面对象的方法,就是靠反射来实现的,关键是整个处理过程,包括反射调用方法、参数映射等。ajaxpro不仅在后台帮我们实现了这个过程,在前台也封装了请求调用的方法,例如ajax的相关方法,用ajaxpro的方法就可以发送异步请求了,不需要自己封装js或者使用js库。接下来就对这个组件进行浅析。
作为开发人员,我们都致力于打造高效、健壮且易于理解、修改和扩展的代码库。 通过采用最佳实践和探索先进技术,我们可以释放 NodeJS 的真正潜力并显着提高应用程序的质量。 在这篇文章中,我们将重点介绍 NodeJS 的五种高级技术。 所以,系好安全带,我们要开车了,准备好探索它们吧。
团队来了新的小伙伴,发现我们的团队代码规范中,要给 async await 添加 try...catch。他感觉很疑惑,假如有很多个(不集中),那不是要加很多个地方?那不是很不优雅?
之前有身边有人问我在错误监控中,如何能实现自动为函数自动添加错误捕获。今天我们来聊一聊技术如何实现。先讲原理:在代码编译时,利用 babel 的 loader,劫持所有函数表达。然后利用 AST(抽象语法树) 修改函数节点,在函数外层包裹 try/catch。然后在 catch 中使用 sdk 将错误信息在运行时捕获上报。如果你对编译打包感兴趣,那么本文就是为你准备的。
说到调用方法, 那么我们首先得有一个方法可以让我们去调用,在Android 4.4 之前我们可以使用 loadurl 去执行, 代码如下:
前端一直是距离用户最近的一层,随着产品的日益完善,我们会更加注重用户体验,而前端异常却如鲠在喉,甚是烦人。
传统的Web系统的全部交互都采用HTTP请求的方式,另外在可视化领域的一些Web展示系统,也多是以HTTP请求的方式来返回需要展示的结果,虽然使用AJAX等技术可以使展示结果具有很高的交互性,但是本质上仍然是针对某一次返回结果的再加工。
Promise大家一定都不陌生了,JavaScript异步流程从最初的Callback,到Promise,到Generator,再到目前使用最多的Async/Await(如果对于这些不熟悉的可以参考我另一篇文章《JavaScript异步编程》),这不仅仅是技术实现的发展,更是思想上对于如何控制异步的递进。Promise作为后续方案的基础,是重中之重,也是面试时候最常被问到的。
在极客教育出版了一个视频是关于《Node.js 异常处理-健壮性》,本文章主要是从内容上介绍如何来处理Node.js异常问题。如果希望学习可前往极客学院:http://www.jikexueyuan.com/course/2373.html 本文章的关键词 - 进程退出 - 内存泄漏 - domain安全保护 ---- Node.js 异常的危害 很多初学的同学很少会关注Node.js的服务安全问题,而当服务器在生成环境遇到此类问题时,又会显得速手无策,因此在学习Node.js的初期了解其
1.Error()构造函数 javascript解析或执行语句时,一旦发生错误,js引擎会将其抛出! JavaScript原生提供了Error()构造函数,所有抛出的错误都是这个构造函数的实例(即对象
ArcGIS JS API 基于古老的 JavaScript 框架 Dojo 开发, dojo 虽然是曾经的王者, 但是2020年的前端开发, 早已是 Angular、 React 和 Vue 三大框架的天下, JavaScript 的新特性可以说是日新月异, 国内也几乎没有人基于 dojo 进行开发, 因此本文介绍如何使用现代化的脚本 (ES6, ES7, ES2018 等, 以下统称 ES6+, TypeScript) 进行 ArcGIS JS API 开发。
在JavaScript中调试异步代码有时感觉就像在雷区中导航。 你不知道console.logs会在何时何地打印出来,你也不知道你的代码是如何执行的。
在这个博客中,我将介绍如何使用Cloud Studio打造一个基于Spring Boot和Vue的学生管理系统。该系统旨在提供一个简单而功能丰富的平台,用于管理学生的信息和课程,并提供一系列功能来增强教育管理的效率和便捷性。
领取专属 10元无门槛券
手把手带您无忧上云