all方法 手写promise_试题-手写实现一个 promise.all - 拿OFFER

Promise.all的实现和原理

Promise.all 功能:

Promise.all(iterable)返回一个新的Promise实例,此实例在iterable参数内素有的Promise都fulfilled或者参数中不包含Promise时,状态变成fulfilled。

如果参数中Promise有一个失败rejected ,此实例回调失败,失败原因的是第一个失败Promise的返回结果let p = Promise.all([p1,p2,p3])

复制代码p的状态由 p1,p2,p3决定,分成以下;两种情况:

(1)只有p1、p2、p3的状态都变成 fulfilled,p的状态才会变成 fulfilled,此时p1、p2、p3的返回值组成一个数组,传递给p的回调函数。

(2)只要p1、p2、p3之中有一个被 rejected,p的状态就变成 rejected,此时第一个被reject的实例的返回值,会传递给p的回调函数。

Promise.all 的特点:    Promise.all的返回值是一个Promise实例Promise.all = function (promise) {

return new Promise((resolve, reject) => {

let index = 0

let result = []

if (promise.length === 0) {

resolve(result)

} else {

function processValue(i, data) {

result[i] = data

if (++index === promise.length) {

resolve(result)

}

}

for (let i = 0; i < promise.length; i++) {

Promise.resolve(promise[i]).then((data) => {

processValue(i, data)

}, (err) => {

reject(err)

return

})

}

}

})

}

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

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

相关文章

排序之选择排序:简单选择+堆排序

一、简单选择排序 1、思想&#xff1a;每遍历一次都记住了当前最小&#xff08;大&#xff09;元素的位置&#xff0c;最后仅需一次交换操作即可将其放到合适的位置。与冒泡排序相比&#xff0c;移动数据次数少&#xff0c;节省时间 &#xff0c;性能优于冒泡排序。 2、时间复杂…

ubantu 添加防火墙策略_Ubuntu 14.04 配置iptables防火墙

Ubuntu默认安装是没有开启任何防火墙的&#xff0c;为了服务器的安全&#xff0c;建议大家安装启用防火墙设置&#xff0c;这里推荐使用iptables防火墙.如果MySQL启本地使用,可以不用打开3306端口.# whereis iptables #查看系统是否安装防火墙可以看到:iptables: /sbin/iptable…

VS集成Qt开发入门(简易时间显示)

VS集成Qt开发入门&#xff08;简易时间显示&#xff09;软件开发入门开发环境简单时间显示&#xff08;LcdNumber&#xff09;ui界面设计&#xff08;clock.ui&#xff09;工程文件&#xff08;clock.h&#xff0c;clock.cpp&#xff09;头文件clock.h&#xff1a;源文件clock.…

ps 毛发 边缘_不会抠图怎么办?PS画笔绘制毛发技巧,抠图流程解析

前两期我们讲了一些简单的抠像方法。第一次我们知道了如何在抠像的同时保留人物投影。第二次我们知道了如何利用背景橡皮擦工具进行抠像。以上是一些稍微简单一些的抠图方法&#xff0c;人人都可以轻松办到。今天讲如何利用PS画笔绘制毛发。今天的知识稍微需要点耐心。如何把下…

Tornado 自定义session,与一致性哈希 ,基于redis 构建分布式 session框架

Tornado 自定义session&#xff0c;与一致性哈希 &#xff0c;基于redis 构建分布式 session import tornado.ioloopimport tornado.webfrom myhash import ringcreate_session_id sasd # 随机生成的 session 函数class SessionGen(object):container {}def __init__(self,ha…

基于结构体的二进制文件读写

基于结构体的二进制文件读写项目介绍工程创建结构体的创建写二进制文件结果读二进制文件结果参考文献项目介绍 本次设计是为了提高读写二进制文件的效率&#xff0c;以约定的结构体形式进行读写操作&#xff0c;避免了一个字节一个字节的多次写入读取操作&#xff0c;并且能以…

排序算法-希尔排序

上一篇讲解了简单插入排序算法&#xff0c;以及在其基础上优化的二分插入排序算法&#xff0c;但是每次插入需要按间隔为 1 移动有序区的元素&#xff0c;效率不高&#xff0c;下面我们来介绍一种新的插入排序算法-希尔排序。 算法简介 希尔排序&#xff08;Shell Sort&#xf…

封包时发现的关于QIODevice类write函数的坑

关于QIODevice类write函数的坑问题概述问题部分代码问题解决结论问题概述 这两天在做TCP通信的封包解包协议操作时&#xff0c;不经意间被write函数坑了好久。通过内存复制进行数据封包&#xff0c;在写入socket的时候总是写入一个字节&#xff0c;不能全部写入数据&#xff0…

java c++ python哪个好_程序员学java好还是python语言好 c++又如何

技术程序员学Java、C、Python... 分析对比&#xff0c;到底学什么语言吃香&#xff0c;哪种语言最靠谱&#xff0c;如何学好这些语言呢&#xff1f;几天前&#xff0c;我们在知识上看到这样一个问题&#xff1a;“java&#xff0c;C&#xff0c;Python&#xff0c;走&#xff0…

Qt多文件传输功能实现及方法概述

Qt多文件传输功能实现前言代码实现概述客户端代码实现服务端代码效果展示结论前言 本次设计主要是为了功能上的实现&#xff0c;因此对于ui界面的设计都是怎么简单怎么来的&#xff0c;主要的功能就是实现多个文件的发送与接收&#xff0c;即客户端发送&#xff0c;服务端接收…

jedispool redis哨兵_Redis详解(九)------ 哨兵(Sentinel)模式详解

在上一篇博客----Redis详解(八)------ 主从复制,我们简单介绍了Redis的主从架构,但是这种主从架构存在一个问题,当主服务器宕机,从服务器不能够自动切换成主服务器,为了解决这个问题,我们又介绍了哨兵模式,本篇博客我们继续深入的介绍一下这种模式.1、架构图2、服务器列表3、搭…

从java到C++入门

C基础知识前言基础前言 当初为了赶一波互联网热潮自学了java&#xff0c;如今因为需要就从java转向C开发&#xff0c;于是就有了java到C入门&#xff0c;每次的学习我都会记录一下C的学习历程。 基础 C对于内存的控制管理比java要有更多要求&#xff0c;因此C对于变量的创建…

wordpress 外部数据接口_使用接口方式获取WordPress用户信息的方法

今天WordPress主题站简单介绍一下WordPress系统中用户信息获取方式&#xff0c;今天就讲讲使用接口方式获取WordPress用户信息的方法。接口文件如下&#xff1a;if (POST ! $_SERVER[REQUEST_METHOD]) {header(Allow: POST);header(HTTP/1.1 405 Method Not Allowed);header(Co…

结构体内存拷贝的两种方法

结构体内存拷贝的两种方法前言内容总结前言 最近看一些代码&#xff0c;发现内存拷贝的两种方式&#xff0c;下面我就来介绍一下两种方式。 内容 首先定义一个结构体processorHead.h&#xff1a; #pragma pack(1)typedef struct {short b;int c;long long d; }DATA;#pragma…

大学物理实验长度的测量实验报告_大学物理实验教案长度和质量的测量两篇

大学物理实验教案长度和质量的测量两篇篇一&#xff1a;大学物理实验教案4--长度测量大学物理实验教案实验目的&#xff1a;1&#xff0e;掌握游标卡尺、螺旋测微计和移测显微镜的测量原理和使用方法。 2&#xff0e;根据仪器的精度和有效数字的定义&#xff0c;正确记录原始数…

Linux命令应用大词典-第25章 备份与还原

25.1 mkisofs:创建ISO9660/Joliet/hfs文件系统转载于:https://www.cnblogs.com/tqtl911/p/8661006.html

C++灵魂->指针

C灵魂->指针地址指针野指针空指针 【内存动态分配】指针变量的运算&#xff08;&#xff0c;-&#xff0c;&#xff0c;--&#xff09;指针与一维数组地址 计算机将内存以单个字节为单位分开&#xff0c;并对每个字节进行唯一性编号&#xff0c;那么这个编号就是地址。 取…

cpython cython_python – 优化Cython中的字符串

我建议你在cpython.array.arrays上进行你的操作.最好的文档是C API和Cython源码,我太懒了链接了.from cpython cimport arraydef cfuncA():cdef str acdef int i,jfor j in range(1000):a .join([chr(i) for i in range(127)])def cfuncB():cdef:str aarray.array[char] arr,t…

团队协作小结

0.前提&#xff1a;协作目标保持一致&#xff0c;目标理解一致。 1.量化工作内容&#xff0c;以工作量算&#xff0c;可以适当结合成员自身特点划分内容。 2.职责明确&#xff0c;工作块必须有一名负责人&#xff0c;不要搞多人化&#xff0c;防止责任推诿。 转载于:https://ww…

TCP解决粘包问题(结构数据封包拆包)

TCP封包拆包前言封包一、包结构二、封包方法拆包总结前言 TCP协议(Transmission Control Protocol&#xff09;是一种面向连接的、可靠的、基于字节流的通信协议&#xff0c;即TCP采用字节流的方式&#xff0c;以字节为单位传输字节序列。 如果简单的发送长串的数据流&#xf…