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

typeScript版仿Promise源码

作为一个前端, 还有人说不会用 Promise,真的就有点过分了. 为了跟上卷的潮流,我们今天就用typeScript 来实现一下 Promise 的实现....*写 promise 之前我们需要明确一些常识....必须是一个构造函数或是类(我们在使用时必须 new, js中 类实际即时构造函数的语法糖) promise 有三个状态 padding(等待) fulfilled(完成) reject(异常...) promise 状态一旦改变就冻结, 不再发生改变 支持链式调用 拥有 all, resolve, reject, race 四个静态方法 下面我们开始进入代码块 // 首先promise 有三个状态...(reason) } } } 以上我们就实现了一个很简单的 Promise, 这个 Promise 很弱, 只能执行同步代码, 也不支持链式调用.显然这样肯定不行的, 大家都知道, Promise

53920

从C#到TypeScript - Promise

从C#到TypeScript - Promise 背景 相信之前用过JavaScript的朋友都碰到过异步回调地狱(callback hell),N多个回调的嵌套不仅让代码读起来十分困难,维护起来也很不方便...这篇先来看看Promise: Promise的特点 Promise之于TypeScript,相当于Task之于C#,只有返回Promise的函数才能使用async await。...Promise的使用 可以直接new一个Promise对象,构造函数的参数是一个有两个参数的函数。...console.info(error); // Error: catch error }; BlueBird的 finally 和 done 异常的try...catch后面可以跟finally来执行必须要执行的代码...Promise除了用then来顺序执行外,也同样可以不阻塞同时执行多个Promise然后等所有结果返回再进行后续操作。

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

    TypeScript: 为什么必须学

    或者换一个问题,为什么在项目中,我们要选择使用typescript?也许你还不知道其中缘由,一起跟着我的思路捋一捋。...带来的后果就是,在开发过程中的所有语法错误,我们都没办法通过某种方式去完全预知到,而必须在浏览器里执行一次看到报错之后才知道自己某个地方写错了。 当项目稍微复杂一点,无法预知语法错误可以说是一场灾难。...interface描述复杂数据 interface IParamA { id: number, name: string } function fetchList(params: IParamA): Promise...typescript 已经成为了前端开发者的必备技能之一。...而由于WebAssembly的原因,typescript可以轻松编译成WebAssembly字节码格式,ts甚至将会是JavaScript的未来。

    1.3K30

    鸿蒙高质量代码静态检测200条一

    ”对象的值使用await关键字,相反对“Thenable”对象必须使用await,例如对Promise对象。...@typescript-eslint/comma-spacing强制逗号前后的空格风格保持一致,例如强制要求逗号前不加空格,逗号后必须添加空格"@typescript-eslint/comma-spacing..."@typescript-eslint/init-declarations": [ "error", "always"]禁止或者要求在变量声明中进行初始化设置为always时,声明变量必须初始化,设置为.../no-floating-promises要求正确处理Promise表达式,例如Promise一定要处理异常情况@typescript-eslint/no-implied-eval禁止使用类似“eval...”和“constructor”@typescript-eslint/no-misused-promises禁止在不正确的位置使用Promise@typescript-eslint/no-non-null-asserted-optional-chain

    5700

    Java和TypeScript开发者之间的区别必须知道

    今天将给大家介绍一下Java和TypeScript开发者之间的区别。 你懂Java吗?你想学习TypeScript吗?TypeScript和Java之间有五个不同之处,这将使学习过渡更加容易。...下面是每个学习TypeScript的Java开发人员需要知道的五件事: TypeScript和Java一样面向对象。 TypeScript和Java在语法上存在一些差异。...TypeScript的编译与Java不同。 NodeJS的TypeScript组件库是NPM。 你需要找到一个好的TypeScript IDE。...1.TypeScript和Java一样面向对象 TypeScript从一开始就打算成为OOP语言。Java中OOP的所有标准特性都在TypeScript中。...来到TypeScript的Java程序员必须花一些时间学习TypeScript语法。TypeScript语法并不难学;它与Java语法有点不同。

    3.8K41

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

    不需要 baseUrl 指定路径 在 TypeScript 4.1 之前,要能够使用 tsconfig.json 文件中的 paths,必须声明 baseUrl 参数。...因此,要修复您的代码,必须删除 async 关键字: abstract class MyClass { // 在 TypeScript 4.1 中必须删除 async abstract async...create(): Promise; } any/unknown 向外传播 在 TypeScript 4.1 之前,对于像 foo && somethingElse 这样的表达式,...Promise 中 resolve 的参数不再是可选类型 Promise 中 resolve 的参数不再是可选的,例如下面的代码: new Promise((resolve) => { doSomethingAsync...要解决这个问题,必须在 Promise 中给 resolve 提供至少一个值,否则,在确实需要不带参数的情况下调用 resolve() 的情况下,必须使用显式的 void 泛型类型参数声明 Promise

    3.9K10

    【TypeScript 演化史 -- 4】更多的字面量类型 与 内置类型声明

    为了使函数的 input 参数接受可为 null 的类型的值,必须在联合类型中明确包含 null 和undefined 类型。...如果 parsed.success 为 false,则 parsed 的类型必须为 { success: false; error: string }。..."es6-promise"; 有了这个 polyfill,现在就可以在应用程序中使用 Promise,代码也可以正常运行。...然而,TypeScript 会给你一个编译时错误: Cannot find the name 'Promise'。这是因为 Promise 的类型声明不包含在任何注入的 API 组中。...咱要让 TypeScript 知道 Promise 会在运行时存在,这就是 lib 编译器选项发挥作用的地方: 注意,一旦覆盖了默认值,就必须显式地提供所有API组,如下所示: { "compilerOptions

    1.1K20

    【TypeScript 演化史 — 第五章】将 asyncawait 编译到 ES3ES5 (外部帮助库)

    (resolve) { setTimeout(resolve, ms) }) } delay 函数返回一个 promise,调用时可以使用 await 来等待这个 promise,如下所示:...生成的 JS 代码与 TypeScript 代码相同,除了已除去所有类型注释和空白行: function delay(ms) { return new Promise(function(resolve...注意,为了让各位的代码在 ES3 或 ES5 环境中成功运行,需要提供Promise polyfill,因为 Promise 只在 ES2015 中引入。...另外,你必须让TypeScript知道在运行时,它可以找到 Promise 函数。这在上一章TypeScript 2.0:内置类型声明 有讲过了。...咱必须检查应用程序需要哪些包,然后以某种方式使它们在包中可用。一点都不好玩了。还好,TypeScript 团队提出了一个更好的解决方案。

    2.9K20

    2024年2月前端资讯动态:JSR新仓库革新及Set方法等全新特性

    1、探索JSR:Deno团队的新型JavaScript/TypeScript仓库 在JavaScript和TypeScript的世界里,一个新的仓库概念——JSR(JavaScript/TypeScript...开发者只需发布他们的源码,无论是TypeScript还是JavaScript,JSR都能确保用户消费到正确版本的代码。...对于TypeScript开发者来说,JSR还提供了一些特有的功能,比如限制性地快速类型检查(即“zapping”),以及通过自动生成文档来完整地记录发布的代码。...Promise.any() Promise.any() 方法接收一个 Promise 数组,只要数组中的任何一个 Promise 成功解决,它就会解决,并返回第一个成功的 Promise 的结果。...依赖模块的更新:如果一个模块被多个地方依赖,需要确保这些依赖也能正确处理模块的更新。

    24810

    【TypeScript 演化史 -- 5】将 asyncawait 编译到 ES3ES5 (外部帮助库)

    (resolve) { setTimeout(resolve, ms) }) } delay 函数返回一个 promise,调用时可以使用 await 来等待这个 promise,如下所示:...生成的 JS 代码与 TypeScript 代码相同,除了已除去所有类型注释和空白行: function delay(ms) { return new Promise(function(resolve...注意,为了让各位的代码在 ES3 或 ES5 环境中成功运行,需要提供Promise polyfill,因为 Promise 只在 ES2015 中引入。...另外,你必须让TypeScript知道在运行时,它可以找到 Promise 函数。这在上一章TypeScript 2.0:内置类型声明 有讲过了。...咱必须检查应用程序需要哪些包,然后以某种方式使它们在包中可用。一点都不好玩了。还好,TypeScript 团队提出了一个更好的解决方案。

    2.8K40

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

    Typescript 3.9 新特性一览 好消息好消息,3.9 正式版本发布了 相关文章导航 Typescript 3.7 常用新特性一览 Typescript 3.8 常用新特性一览 Typescript...概况一览 1、优化了 Promise.all 的定义,在 3.7 版本中一些混用 null 或 undefined 的时候的问题已经在 3.9 得到了修复。...定义和书写规范上的改动和修复以前的 bugs 挑几个重点的写一下 1、interface 的优化和 promise.all 使用修复 我们知道在 3.7 版本后面对 promise.all & promise.race...2、TypeScript 打包编译等速度提升 这里主要是优化了几个微软的内部项目的性能优化,比如: Typescript 团队发现以前的 Material-ui 与 Styled-Components...在旧版本中,TypeScript 强制要求用户无论使用什么文件,都必须以 ECMAScript 的形式导入,例如: import * as fs from "fs"; 但在编写 JavaScript

    1.4K20

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

    在下面的例子中,要访问 address,你必须遍历 data.customer.address,而且 data 或 customer 有可能是 undefined,所以通常使用 && 运算符或类似例子中的技巧遍历检查每个层次的定义...在 v3.6 之前,如果必须定义一个简单的 JSON 类型,则必须像下面这样: interface JSONObject { [x: string]: JSONValue; } interface JSONArray...Date } console.log(getYear(new Date('2019-01-01'))); console.log(getYear('2019-01-01')); 02 5.为Promise...提供更好的反馈 从 3.6 起改进 在代码中直接使用 Promise 而忘记使用 await 或 then 是常见的错误,如下所示: } 以前的 TypeScript 完全不了解 Promise,并显示一条与其无关的错误消息...,如下所示: 从 v3. 6 开始,编译器变得非常聪明,可以建议你应该兑现 Promise。

    2K40

    7 个好用的 TypeScript 新功能

    在下面的例子中,要访问 address,你必须遍历 data.customer.address,而且 data 或 customer 有可能是 undefined,所以通常使用 && 运算符或类似例子中的技巧遍历检查每个层次的定义...在 v3.6 之前,如果必须定义一个简单的 JSON 类型,则必须像下面这样: interface JSONObject { [x: string]: JSONValue; } interface JSONArray...Date } console.log(getYear(new Date('2019-01-01'))); console.log(getYear('2019-01-01')); 02 5.为Promise...提供更好的反馈 从 3.6 起改进 在代码中直接使用 Promise 而忘记使用 await 或 then 是常见的错误,如下所示: } 以前的 TypeScript 完全不了解 Promise,并显示一条与其无关的错误消息...,如下所示: 从 v3. 6 开始,编译器变得非常聪明,可以建议你应该兑现 Promise。

    1.8K20
    领券