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

帮助编写异步代码的ESLint规则

幸运的是,在将错误推向生产环境之前,我们有一些规则来捕捉这些错误。以下是一份经过编译的linting规则列表,可为你在 JavaScript 和 Node.js 中编写异步代码提供具体帮助。...应将该值传递给resolve,如果发生错误,则调用 reject 并告知错误信息。 该规则不会阻止你在 Promise 构造函数中的嵌套回调内返回值。...忘记处理错误会导致应用程序行为异常。 当函数的第一个参数名为 err 时,就会触发该规则。在大型项目中,经常会发现不同的错误命名方式,如 e 或 error。...的值是有效的 JavaScript(它会立即解析),但这往往表明程序员出错了,比如在调用一个返回 Promise 的函数时忘记加上括号。...promise的非同步函数可能会有问题,因为它可能会抛出一个 Error 对象并返回一个被拒绝的promise。

24210

在 JavaScript 中写好异步代码的14条Linting规则

幸运的是,在我们将它们投入生产之前,我们有一些 linters 可以捕获我们的一些错误。...(responses); no-promise-executor-return 不建议在 Promise 构造函数中返回值,Promise 构造函数中返回的值是没法用的,并且返回值也不会影响到 Promise...问题在于读取 totalPosts 和更新 totalPosts 之间有一个时间间隔。这会导致竞争条件,当值在单独的函数调用中更新时,更新不会反映在当前函数范围中。...建议在 reject Promise 时强制使用 Error 对象,这样可以更方便的追踪错误堆栈。...忘记处理这些异常可能会导致你的应用程序出现不可预知的问题。 如果函数的第一个参数命名为 err 时才会触发这个规则,你也可以去 .eslintrc 文件里自定义异常参数名。

1.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何在 TypeScript 中使用函数

    如果我们调用函数的值的类型与函数预期的类型不同,TypeScript 编译器 (tsc) 会给我们错误 2345。...当我们在函数体中返回字符串时,TypeScript 正确地假定我们的函数具有字符串返回类型。...使用类型化异步函数 在使用 JavaScript 时,使用异步函数是比较常见的。TypeScript 有一种特定的方法来处理这个问题。在本节中,我们将在 TypeScript 中创建异步函数。...这样做会导致 TypeScript 编译器发出错误 1375: 输出'await' 表达式仅在文件是模块时才允许在文件的顶层使用,但该文件没有导入或导出。...在使用该数组之前,我们可以使用 .filter(Boolean) 对其进行过滤,以确保仅返回真实值。

    15K10

    手撕钉钉前端面试题

    如果你之前经常进行无原则性的代码设计,那么在设计过程中可能会出现各种出乎意料的问题(这是为什么新手老是出现一些稀奇古怪问题的主要原因)。...函数式编程的核心就是对函数进行组合或传递,JavaScript 中函数这种灵活的特性是满足函数式编程的重要条件。 纯函数 纯函数是是指在相同的参数调用下,函数的返回值唯一不变。...JavaScript 中标准的异步 API ,如果使用一些三方的异步 API 并且提供了回调能力时,这些 API 可能是非受信的,在真正使用的时候会因为执行反转(回调函数的执行权在三方库中)导致以下一些问题...: 调用 async 函数后返回的是一个 Promise 对象,通过 then 回调可以拿到 async 函数内部 return 语句的返回值 调用 async 函数后返回的 Promise 对象必须等待内部所有...,会导致函数返回的 Promise 对象变为 rejected 状态,从而可以通过 catch 捕获, 上述代码只是一个粗粒度的容错处理,如果希望 firstPromise 错误后可以继续执行 nextPromise

    3K21

    TypeScript 3.9正式发布!平均编译时长从26秒缩短至10秒

    由于 TypeScript 具有丰富的跨编辑器功能,因此其中的静态 type 检查能够在代码运行甚至文件保存之前快速指示代码中存在的错误。...除了错误检查之外,TypeScript 还允许用户在自己熟悉的编辑器中为 TypeScript 以及 JavaScript 代码提供补全、快速修复以及重构等功能。...Inference 与 Promise.all 迎来改进 TypeScript 的最近几个版本(3.7 及之后)已经对 Promise.all 及 Promise.race 等函数的声明做出更新。...在条件表达式中检查未调用函数 在 TypeScript 3.7 版本中,我们引入了未调用函数检查(uncalled function checks)以提示那些您忘记调用的函数。...快速修复缺失的返回表达式 在某些情况下,大家很可能会忘记返回函数中最后一条语句的值。

    1.7K20

    写好 JavaScript 异步代码的几个推荐做法

    另外,如果 async 函数抛出了异常,新构造的 promise 实例并不会 reject ,那么这个错误就捕获不到了。...(responses); no-promise-executor-return 不建议在 Promise 构造函数中返回值,Promise 构造函数中返回的值是没法用的,并且返回值也不会影响到 Promise...问题在于读取 totalPosts 和更新 totalPosts 之间有一个时间间隔。这会导致竞争条件,当值在单独的函数调用中更新时,更新不会反映在当前函数范围中。...建议在 reject Promise 时强制使用 Error 对象,这样可以更方便的追踪错误堆栈。...忘记处理这些异常可能会导致你的应用程序出现不可预知的问题。 如果函数的第一个参数命名为 err 时才会触发这个规则,你也可以去 .eslintrc 文件里自定义异常参数名。

    1K10

    【译】Typescript 3.9 常用新特性一览

    概况一览 1、优化了 Promise.all 的定义,在 3.7 版本中一些混用 null 或 undefined 的时候的问题已经在 3.9 得到了修复。...3、// @ts-expect-error 新注释的添加 4、在条件语句中检测未调用的函数 5、编辑器提升 5.1 在 JavaScript 中 CommonJS 的自动引入 5.2 在代码操作的时候正确的保留换行符...5.3 添加快速修复缺失的函数返回表达式 5.4 支持 "Solution Style" tsconfig.json 文件 6、一些重大变化 主要是在 TypeScript 定义和书写规范上的改动和修复以前的.../T… github.com/microsoft/T… github.com/microsoft/T… github.com/microsoft/T… 4、在条件语句中检测未调用的函数 在 3.7 的时候引入了检测未调用函数错误提示...现在有了如下自动引入的功能 const { readFile } = require('fs') 5.2 缺失的函数返回值的自动修复功能 在某些情况下,我们可能会忘记返回函数中的最后一条语句的值,尤其是在向箭头函数添加大括号时

    1.4K20

    什么是 TypeScript 4.1 中的模板字面类型?

    利用带有 as 子句的模板文字类型 (source) JSX 工厂函数 JSX 代表 JavaScript XML,它允许我们使用 JavaScript 编写 HTML 元素并将其放置在 DOM 中,...create(): Promise; } any/unknown 向外传播 在 TypeScript 4.1 之前,对于像 foo && somethingElse 这样的表达式,...要解决这个问题,必须在 Promise 中给 resolve 提供至少一个值,否则,在确实需要不带参数的情况下调用 resolve() 的情况下,必须使用显式的 void 泛型类型参数声明 Promise...owner, defaultUserId: 123, }; } 在TypeScript 4.1之前, getOwner 返回基于每个展开对象的联合类型: { x: number } | {...解决方法是,最好使用类型断言来避免错误。 最后一点想法 TypeScript 通过在运行代码之前捕获错误并提供修复程序来节省我们的时间。

    3.9K10

    实现TypeScript运行时类型检查

    这个问题对一个纯前端工程师来说是有些"奇怪"的.因为前端并不需要对JSON 进行encode/decode , 只需要对JSON string 进行parse.parse 之后的数据便是JavaScript..."的失败, 导致整个"大"解析器被终止.只有赋予解析器更灵活地处理异常的能力, 我们才能实现更加灵活的组合方式和错误日志的收集.此处可能有些抽象, 如果有所疑惑是正常现象, 结合下文理解会更加容易些.因此..., 类似于Golang 中的错误处理方式.但直接通过union type进行抽象有一个弊端: 我们将难以分辨解析器返回的数据是属于成功分支的A呢, 还是失败分支的E呢?...Parser 之前, 让我们先来了解一个概念 -- 组合子.组合子, 顾名思义, 就是对某种抽象的组合操作, 在本文中, 特指为对解析器的组合操作.如上是示例所示, 在TypeScript 中, 我们也是经常使用...[]>作为最终Parser的返回值.这个类型转换具有通用性, 是函数式编程中的一个重要抽象, 在本节中会化一些篇幅对其推导, 最终将改抽象对应到Haskell 的sequenceA函数.为了Either

    2.5K30

    TS 真香系列:你应该知道的核心功能

    从最新的《 Javascript 语言状况调查》(https://2019.stateofjs.com/javascript-flavors/typescript/)中可以看出,该语言的使用率越来越高。...本文将会总结你应该使用的最重要的功能。我会重点介绍以下最新版本的功能: 注意:在探究这些功能之前,你应该先去看一下 TypeScript playground,在这里可以测试所有的功能。...|| 本质上是 JavaScript 中的布尔 OR 运算符,我们尝试利用短路返回第一个非 false 值。...对于断言函数,应该添加 asserts as 而不是返回类型。 这样,如果断言通过,TypeScript 将假定参数是前面定义的类型。...提供更好的反馈 从 3.6 起改进 在代码中直接使用 Promise 而忘记使用 await 或 then 是常见的错误,如下所示: } 以前的 TypeScript 完全不了解 Promise,并显示一条与其无关的错误消息

    2K40

    React + TypeScript + Hook 带你手把手打造类型安全的应用。

    : any): Promise | never 泛型 T 被原封不动的交给了返回值的 Promise, 所以外部 axios 调用时传入的 Todos 泛型就推断出返回值是了 Promise,Ts...函数重载 写到这里,类型基本上是比较严格了,但是还有一个问题,就是在调用呢axios(Urls.TOGGLE)这个接口的时候,我们其实是一定要传递第二个参数的,但是因为axios(Urls.TODOS)...设置为可选,这就导致了一个问题,就是 ts 不能明确的知道哪些接口需要传参,哪些接口不需要传参。 注意下图中的 payload 是带?的。 要解决这个问题,需要用到 ts 中的函数重载。...但是就算是写宽松版本的 TypeScript,带来的收益也远远比裸写 JavaScript 要高很多,尤其是在别人需要复用你写的工具函数或者组件时。...而且 TypeScript 也可以在开发时就避免很多粗心导致的错误,详见: TypeScript 解决了什么痛点?

    12810

    TypeScript 4.4 RC版来了,正式版将于月底发布

    这不科学,毕竟用户很可能希望在多个位置重复执行相同的检查。为了解决这个问题,之前大家只能重复操作或者使用类型断言(强制转换)。 但在 TypeScript 4.4 中,问题已不复存在。...}; 因此,TypeScript 在默认情况下并不能区分实际值为 undefined 的属性与缺失的属性。虽然大多数情况下这并不是什么问题,但也有一些 JavaScript 代码会做出不同的假设。...这会导致不少构建操作如同 --incremental 被关闭了一样缓慢。TypeScript 4.4 修复了这个问题,同时也将修复成果向下移植到了 TypeScript 4.3 当中。...间接调用导入函数以提升合规性 在其他早期版本中,从 CommonJS、AMD 以及其他非 ES 模块系统处执行的导入调用操作会设置所调用函数的 this 值。...更广泛的始终为真承诺检查 在之前的版本中,TypeScript 引用了“始终为真承诺检查”(Always Truthy Promise checks)来捕捉可能遗留有 await 的代码。

    2.6K20

    React + TypeScript + Hook 带你手把手打造类型安全的应用。

    : any): Promise | never 复制代码 泛型T被原封不动的交给了返回值的Promise, 所以外部axios调用时传入的Todos泛型就推断出返回值是了Promise,Ts就可以推断出这个...函数重载 写到这里,类型基本上是比较严格了,但是还有一个问题,就是在调用呢axios(Urls.TOGGLE)这个接口的时候,我们其实是一定要传递第二个参数的,但是因为axios(Urls.TODOS)...(一定是要能兼容之前所有的函数签名的,所以最后一个签名的payload需要写成可选)来进行函数的实现。...但是就算是写宽松版本的TypeScript,带来的收益也远远比裸写JavaScript要高很多,尤其是在别人需要复用你写的工具函数或者组件时。...而且TypeScript也可以在开发时就避免很多粗心导致的错误,详见: TypeScript 解决了什么痛点?

    1.9K10

    旧项目TypeScript改造问题与解决方案记

    在JavaScript项目中的jsconfig.json同理。 TypeScript相关 对象属性赋值报错 在JavaScript中,我们经常会声明一个空对象,然后再给这个属性进行赋值。...缺点就是引入的Promise库较大,而且如果你的库作为一个基础库时,可能会与其他的调用方的Promise库产生冲突。 3. 在`tsconfig.json`配置文件中增加lib。...这是由于编辑器和编译时不知道当前代码运行环境导致的。 因此,我们解决这个问题的思路有两种: 1. 在`tsconfig.json`配置文件中增加lib。...这是由于两者的模块语法不一样导致的。 因此,我们解决这个问题只需要用下面这一种方法: 1. 将上面的`export from`的语法稍加调整来适配TypeScript语法。...## TypeScript局部替换 在进行重构改造的时候,我们在最开始可能只能逐个模块进行替换。我们需要新的TypeScript文件和旧的JavaScript文件能够和平共存进行编译运行。

    5K10

    异步请求在TypeScript网络爬虫中的应用

    在JavaScript和TypeScript中,异步请求可以通过多种方式实现,包括回调函数、Promises、async/await等。...TypeScript与网络爬虫TypeScript为JavaScript提供了一个可选的静态类型系统,这使得代码更加健壮和易于维护。...设置代理:为了保护爬虫的匿名性,我们设置了代理服务器,包括主机名、端口、用户名和密码。定义爬虫函数:crawler函数是一个异步函数,它接受一个URL作为参数,并返回一个Promise。...错误处理:我们使用try...catch语句来捕获并处理可能发生的错误。运行爬虫为了运行TypeScript代码,你需要将其编译为JavaScript。...异步请求在爬虫中的优势使用异步请求的TypeScript爬虫具有以下优势:非阻塞IO:异步请求不会阻塞主线程,这意味着爬虫可以在等待响应的同时执行其他任务。

    12910

    7 个好用的 TypeScript 新功能

    从最新的《 Javascript 语言状况调查》(https://2019.stateofjs.com/javascript-flavors/typescript/)中可以看出,该语言的使用率越来越高。...本文将会总结你应该使用的最重要的功能。我会重点介绍以下最新版本的功能: 注意:在探究这些功能之前,你应该先去看一下 TypeScript playground,在这里可以测试所有的功能。...|| 本质上是 JavaScript 中的布尔 OR 运算符,我们尝试利用短路返回第一个非 false 值。...对于断言函数,应该添加 asserts as 而不是返回类型。 这样,如果断言通过,TypeScript 将假定参数是前面定义的类型。...提供更好的反馈 从 3.6 起改进 在代码中直接使用 Promise 而忘记使用 await 或 then 是常见的错误,如下所示: } 以前的 TypeScript 完全不了解 Promise,并显示一条与其无关的错误消息

    1.8K20

    10个最受欢迎的 JavaScript 框架,以及它们的主要特征和功能

    Web 开发人员可以使用渲染函数的模板,并可以使用渲染函数替换模板。 体积小:JavaScript 框架的成功取决于它的大小。个头越小用的人越多。 Vue.js 最大的优势之一是体积小。...Backbone.js 通过在视图和模型之间提供事件驱动的通信来克服这个问题。 更少的代码:约定是引入通用编码风格的好方法,而无需提供大量的编码标准。...这意味着基于 Node.js 的服务器永远不会等待 API 返回数据。服务器在调用它之后移动到下一个 API,并且事件的通知机制帮助服务器从先前的 API 调用获得响应。...不要忘记,Aurelia 是唯一允许开发人员使用原生 TypeScript 或 JavaScript 构建组件的框架。...Aurelia 支持 ES5、ES2015、ES2016 和 Typescript,它非常有用,并能够为你提供高度的灵活性。

    4K10

    深入学习下 TypeScript 中的泛型

    TypeScript 完全支持泛型,以此将类型安全性引入到接受参数和返回值的组件中,这些参数和返回值的类型,在稍后的代码中使用之前是不确定的。...这会根据提供给 pickObjectKeys 的参数强制执行返回类型,从而允许函数在知道需要强制执行的特定类型之前灵活地强制执行类型结构。...在这种情况下,fetchApi 函数的返回类型将是 Promise,这是对 fetch 的响应对象调用 json() 的返回类型。将 any 作为返回类型并不是很有帮助。...如果仔细查看您的函数,您会发现参数列表或 TypeScript 能够推断其值的任何其他地方都没有使用泛型。这意味着调用代码在调用您的函数时必须显式传递此泛型的类型。...在调用 reduce 时,reducer 函数的返回类型基于累加器的初始值。

    17810
    领券