备案网站名称有什么用深圳专业企业网站建

diannao/2026/1/19 17:06:15/文章来源:
备案网站名称有什么用,深圳专业企业网站建,新网网站负责人核验现场拍摄照片电子件,重庆潼南网站建设哪家好ts实现的promise和js实现的promise有什么使用上的区别 类型注解 可以为 Promise 指定明确的返回类型#xff0c;如 Promise string、Promisenumber[] 等。这有助于在编译时捕获类型错误类型推断 ts的类型推断功能可以自动推断出 Promise 的返回类型#xff0…ts实现的promise和js实现的promise有什么使用上的区别 类型注解 可以为 Promise 指定明确的返回类型如 Promise string、Promisenumber[] 等。这有助于在编译时捕获类型错误类型推断 ts的类型推断功能可以自动推断出 Promise 的返回类型 提高了代码的可读性。类型安全性 如果你尝试将一个 Promise 的解析值赋给一个不兼容的类型TypeScript 编译器会报错。更好的文档和代码提示 再ide中会提供更好的文档和代码提示包括 Promise 的类型信息、参数列表、返回值等有助于你更快地理解代码并减少错误 示例1 // 示例 myPromise.resolve类型推断 let aa1 myPromise.resolve(123); let aa2 Promise.resolve(123);示例2 // 示例 Promisestring 是一个类型注解 // 定义一个返回Promisestring的函数 // let myPromise: Promisestring; // myPromise new Promise((resolve, reject) { // // ... 异步操作 // resolve(这是另一个返回的字符串数据); // }); function fetchMessageFromServer(): myPromisestring {// 假设这是一个模拟的异步操作例如从服务器获取数据return new myPromisestring((resolve, reject) {setTimeout(() {// 模拟成功获取数据const message 123;resolve(message); // 解析并返回字符串}, 2000); // 假设这个操作需要2秒钟}); }// 使用fetchMessageFromServer函数并处理其结果 fetchMessageFromServer().then((message) {console.log(message); // 输出Hello from the server!console.log(message.length); // 输出21}).catch((error) {console.error(An error occurred:, error);});// 注意在TypeScript中通常不需要显式指定.then和.catch的参数类型因为它们可以从Promise的泛型参数中推断出来。// 如果你使用async/await语法代码会更加简洁和直观 async function printMessageFromServer() {try {const message await fetchMessageFromServer();console.log(message); // 输出Hello from the server!console.log(message.length); // 输出21} catch (error) {console.error(An error occurred:, error);} }printMessageFromServer();ts实现promise代码 // 2.1 promise有三个状态 const PENDING pending; // 等待 const FULLFILLED fullfilled; // 成功 const REJECTED rejected; // 失败// 1. promise是一个类, 执行类需要传递构造函数并立即执行 class myPromiseT {constructor(executor) {// 构造函数constructor是一个类必须要有的方法默认返回实例对象try {executor(this.resolve, this.reject);} catch (e) {this.reject(e);}}status PENDING; // 状态value: T; // 成功的值默认是没有的是undefinedreason: any; // 失败的值默认是没有的是undefinedsuccessCallback: Array((value: T) any) | null [];fallCallback: Array((reason: any) any) | null [];resolve (value: T) {// 2.2 如果状态不是等待阻止程序向下执行因为Promise有三个状态只能 pending - fullfilled / pending - rejected, 一旦状态确定就不可改变if (this.status ! PENDING) return;this.status FULLFILLED; // 更改状态为成功this.value value; // 保存成功的值// 5.2 判断成功回调函数是否存在存在调用// this.successCallback this.successCallback(this.value)// while (this.successCallback.length) this.successCallback.shift()(this.value)while (this.successCallback.length) {const callback this.successCallback.shift();if (callback) callback(this.value);}// this.successCallback.shift()();}; // 箭头函数让函数内部指向类reject (reason) {// 2.3 如果状态不是等待阻止程序向下执行因为Promise有三个状态只能 pending - fullfilled / pending - rejected, 一旦状态确定就不可改变if (this.status ! PENDING) return;this.status REJECTED; // 更改状态为失败this.reason reason; // 保存失败的原因// 5.2 判断失败回调函数是否存在存在调用// this.fallCallback this.fallCallback(this.reason)// while (this.fallCallback.length) this.fallCallback.shift()(this.reason)// while (this.fallCallback.length) this.fallCallback.shift()();while (this.fallCallback.length) {const callback this.fallCallback.shift();if (callback) callback(this.reason);}};then(successCallback?: (value: T) any,fallCallback?: (reason: any) any) {// ???这两行代码意义何在successCallback successCallback ? successCallback : (value) value;fallCallback fallCallback? fallCallback: (reason) {throw reason;};// 11. 传递console.log(this.status, this.status);// 返回promise对象可进行链式调用并在把上一个then传给下一个thenlet promise2 new myPromise((resolve, reject) {// 3. then方法内部就是判断状态的状态是成功调用成功回调失败调用失败回调if (this.status FULLFILLED) {// 9.2 同步代码执行后就可以拿到promise// setTimeout(() {try {// 4.1 then成功的回调有一个参数表示成功的值默认是空的就是undefinedlet x successCallback(this.value);// 判断x的值是普通值还是promise对象// 如果是普通值直接resolve// 如果是promise对象则查看返回的结果根据这个结果决定调用resolve还是reject// resolve(x)resolvePromise(promise2, x, resolve, reject);} catch (e) {reject(e);}// }, 0)} else if (this.status REJECTED) {// 4.2 then失败的回调有一个参数表示失败的原因// fallCallback(this.reason)// let y fallCallback(this.reason)// reject(y)// setTimeout(() {try {// 4.1 then成功的回调有一个参数表示成功的值默认是空的就是undefinedlet x fallCallback(this.reason);// 判断x的值是普通值还是promise对象// 如果是普通值直接resolve// 如果是promise对象则查看返回的结果根据这个结果决定调用resolve还是reject// resolve(x)resolvePromise(promise2, x, resolve, reject);} catch (e) {reject(e);}// }, 0)} else {// 等待状态// 5.1 将成功和失败的状态存储起来// this.successCallback successCallback// this.fallCallback fallCallback// this.successCallback.push(successCallback)// this.fallCallback.push(fallCallback)this.successCallback.push(() {// setTimeout(() {try {// 4.1 then成功的回调有一个参数表示成功的值默认是空的就是undefinedlet x successCallback(this.value);// 判断x的值是普通值还是promise对象// 如果是普通值直接resolve// 如果是promise对象则查看返回的结果根据这个结果决定调用resolve还是reject// resolve(x)resolvePromise(promise2, x, resolve, reject);} catch (e) {reject(e);}// }, 0)});this.fallCallback.push(() {// setTimeout(() {try {// 4.1 then成功的回调有一个参数表示成功的值默认是空的就是undefinedlet x fallCallback(this.reason);// 判断x的值是普通值还是promise对象// 如果是普通值直接resolve// 如果是promise对象则查看返回的结果根据这个结果决定调用resolve还是reject// resolve(x)resolvePromise(promise2, x, resolve, reject);} catch (e) {reject(e);}// }, 0)});}});return promise2;}finally(callback) {return this.then((value) {// callback()// return valuereturn myPromise.resolve(callback()).then(() value);},(reason) {// callback()// // throw reason ???为什么我这么不会执行到finally后面的then// return reasonreturn myPromise.resolve(callback()).then(() {throw reason;});});}catch(fallCallback) {return this.then(undefined, fallCallback);}static all(array) {// 如果是promise保存结果如果是普通值也保存下来最后一并返回let result: any[] [];let index 0;console.log(all);return new myPromise((resolve, reject) {function addData(key: number, value) {result[key] value;index;if (index array.length) {resolve(result);}}for (let i: number 0; i array.length; i) {let current array[i];if (current instanceof myPromise) {// promise 对象current.then((value) addData(i, value),(reason) reject(reason));} else {// 普通值addData(i, array[i]);}}});}static resolve(value) {if (value instanceof myPromise) return value;return new myPromise((resolve) resolve(value));} }function resolvePromise(promise2, x, resolve, reject) {if (promise2 x) {// 9.1 避免then中同一个promise循环返回return reject(new TypeError(Chaining cycle detected for promise #Promise));}if (x instanceof myPromise) {// x.then((value) {resolve(value)}, reason reject(reason))x.then(resolve, reject);} else {resolve(x);} }// 在node中 // module.exports myPromise // 在es6中 // export const myPromise myPromise

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/90281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

商务网站规划与设计实训心得WordPress目录存放大小

功能说明 WAR3游戏启动后,可以自动获取游戏双方的玩家列表,然后查询显示玩家的战绩及个人信息。附带查看玩家的战绩详情、最近游戏,查看对手及友方的战绩详情,据此推算出是否开黑、是否小号等信息 使用方法及运行效果 启动 查…

大连网站设计案例办公oa系统大概多少钱

继续蓝牙系列的研究。 在上篇博客,通过阅读BTStack的源码,大体了解了其框架,对于任何一个BTStack的应用程序都有一个main函数,这个main函数是统一的。这个main函数做了某些初始化之后,最终会调用到应用程序提供的btst…

企业网站界面风格设计描述wordpress视频云解析

本文收录于专栏:精通AI实战千例专栏合集 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 每一个案例都附带关键代码,详细讲解供大家学习,希望可以帮到大家。正在不断更新中~ 一. 利用深度学习进行手势识别与控制 …

好的网站设计题目鞍山站

用VC修改注册表----让我们踏出第一步(适合初学者)转载自:www.csdn.net 开场白 你是不是非常期待通过自己的双手,写出一个有模有样的"系统修改(维护)工具软件"?我想答案应该是肯定的&…

威海外贸建站自豪的由wordpress驱动

场景:现有环境已经使用Java 8在运行业务,安装Jenkins后启动报错。 原因:因为Jenkins-2.396 依赖于Java 11 版本才能启动。 解决方法: yum 安装Java11 yum install java-11-openjdk-devel java-11-openjdk 或者二进制安装java11修…

广州市口碑好的网站制作排名wordpress微信服务号登录

必须要做的事情是: 考过GRE和TOEFL 准备推荐信 个人CV 联系导师一般就是发邮件 转载于:https://www.cnblogs.com/zhulinmails/p/5078695.html

外包网站建设优化搜狗排名

大家好,我是若川。持续组织了6个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步。同时极力推荐订阅我写的《学习源码整体架构系列》 包含20余篇源码文章。历史面试系列Rollu…

网站开发的业内人士更多标签的适用场景

写在前面 上一篇文章讲了如何构建业务大图,看到有评论说这和设定 OKR 差不多啊。希望其他读者不要被类似的看法带偏。业务大图是业务顶层设计,是战略目标、业务长期价值、业务维度拆分、业务组织设计、业务长期发展方向、关键业务战役、短期重点事项的综…

菏泽哪里做网站基于o2o的旅游网站建设

第三章 数据链路层 数据链路层在五层体系结构中处于第二层 链路层的任务是,把下面不可靠的物理层(信道)改成相对可靠的逻辑信道,把网络层提供的数据封装成数据帧交给物理层进行传递。 透明传输问题:不要因为封装成帧导…

宣威做网站建设的公司网站开发完后部署到网上

《工作分析与设计》作业 单选题 1、工作分析最初产生于( )的工业企业中。 A.英国 B.德国 C.美国 D.日本 2、( )是组织中最基本的活动单元。 A.任务 B. 部门 C.工作 D.岗位 3、同一职系中职责繁简、难易、轻重及任职条件充分相似的…

上海营销型网站建设平台昆明网站制作服务商

这是一篇对什么是C的The Rule of Three的错误更正和详细说明。阅读时间7分钟。难度⭐⭐⭐虽然上一篇文章的阅读量只有凄惨的两位数,但是怀着对小伙伴负责的目的,必须保证代码的正确性。这是大厨做技术自媒体的态度。前文最后一段代码是这样的&#xff1a…

php网站开发教程下载广州好的做网站公司

小猪的Android入门之路 Day 1 Android相关背景与开发环境的搭建 ------转载请注明出处:coder-pig 本节引言: 随着社会经济的发展,移动互联网的越来越热,手机APP开发显得格外火爆, 作为一名快要毕业的IT屌丝,自然要趟一趟这一浑水啦,当前主流的手机系统 IOS(苹果),Android(安卓)…

临海手机网站上海4a广告公司排名

Docker 入门使用说明 Docker 安装 Docker 官网:Docker Docker 安装说明:Docker 安装说明 这里由于 Docker 在实时更新,所以每次安装 Docker 用来导入 key 的链接可能会有变化,这里就参考官方的安装方法即可 Docker 常用命令说…

做网站有骗子平面设计找图网站

参考 一文学会如何做电商数据分析(附运营分析指标框架) 电子商务该如何做数据分析?如何数据分析入门(从各项指标表象进入) https://www.processon.com/outline/6589838c3129f1550cc69950 数据分析步骤 什么是数据分析…

自己怎么拍做美食视频网站百度域名值多少钱

摘要 如果要判断某一脚本是否在运行,可以通过psutil库获取所有进程的cmdline,并判断指定的文件名是否在cmdline中。 目录 1.psutil库简介 2.检查代码及说明 2.1检查思路 2.2异常捕获 2.3执行方法 1.psutil库简介 psutil 是一个跨平台(…

用dw做音乐网站wordpress中文二次元

1.原因:出现了特殊字符 SpringBoot 2.0.0 以上都采用内置tomcat8.0以上版本,而tomcat8.0以上版本遵从RFC规范添加了对Url的特殊字符的限制,url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~四个特殊字符以及保留字符( ! * ’ ( ) ; : &…

电子商务网站建设复习题哪有网站建设明细报价表

uni-app 微信小程序:启用组件按需注入 文章目录 uni-app 微信小程序:启用组件按需注入一、官方文档按需注入注意事项 二、HBuilder X 设置三、效果 一、官方文档 https://developers.weixin.qq.com/miniprogram/dev/framework/ability/lazyload.html 按…

城乡建设部网官方网站网站群建设招标

说一说vue钩子函数 钩子函数是Vue实例创建和销毁过程中自动执行的函数。按照组件生命周期的过程分为:挂载阶段 -> 更新阶段 -> 销毁阶段。 每个阶段对应的钩子函数分别为:挂载阶段(beforeCreate,created,befor…

上的网站app创建网站容易吗

转自:http://www.cnblogs.com/-Lei/archive/2012/09/04/2670942.html 下面是对socket操作的封装,因为在Linux下写中文到了windows里面会乱码,所以注释用英文来写,有空再查下解决方法吧 socket.h #ifndef SOCKET_H #define SOCKET_…

西安网站建设动力无限移动关闭流量自动续费

1 概述 单例模式就是保证一个类只有一个对象实例。 为了保证无法创建多余的对象实例,单例类中需要自己创建对象实例,并把自己的构造方法私有化以防止其他地方调用创建对象,且需要提供一个公共的方法给其他类来获取该单例类的实例。 同时单例…