promise.allrace

news/2025/2/26 13:15:37

Promise.all()

Promise.all() 它接收一个promise对象组成的数组作为参数,并返回一个新的promise对象。

当数组中所有的对象都resolve时,新对象状态变为fulfilled,所有对象的resolve的value依次添加组成一个新的数组,并以新的数组作为新对象resolve的value。
当数组中有一个对象reject时,新对象状态变为rejected,并以当前对象reject的reason作为新对象reject的reason。

Promise.all = function(promiser) {
    if(!Array.isArray(promiser)) {
        throw new TypeError('params must array')
    }
    return new Promise((resolve,reject) => {
        var result = [],count = promiser.length;
        function resolver(value) {
            resolveAll(value)
        }
        function rejecter(reason) {
            reject(reason)
        }
        function resolveAll(value) {
            result.push(value)
            if(--count == 0) {
                resolve(result)
            }
        }
        for(var i= 0;i<promiser.length;i++) {
            promiser[i].then(resolver,rejecter)
        }
    })
}

Promise.race()

Promise.race() 它同样接收一个promise对象组成的数组作为参数,并返回一个新的promise对象。

与Promise.all()不同,它是在数组中有一个对象(最早改变状态)resolve或reject时,就改变自身的状态,并执行响应的回调。

Promise.race = function(promiser) {
    if(!Array.isArray(promiser)) {
        throw new TypeError('params must be array')
    }
    return new Promise((resolve,reject) => {
        function resolver(value) {
            resolve(value)
        }
        function rejecter(reason) {
            reject(reason)
        }
    })
    for(var i =0;i<promiser.length;i++) {
        promiser[i].then(resolver,rejecter)
    }
    
}

 


http://www.niftyadmin.cn/n/4541414.html

相关文章

vue版公共请求方法

import axios from "axios"; import Qs from "qs"; import API_BASE_URL from "/api/api.js"; const Http axios.create({baseURL: API_BASE_URL,timeout: 6000, // 设置超时时间6swithCredentials: true, // cross-site Access-Control });// …

ROS2中涉及到的基本概念

从计算图&#xff08;Graph&#xff09;级的角度来看&#xff0c;ROS的本质就是一个基于网络的数据流动控制器。它的核心roscore其实就相当于一个服务器&#xff08;Server&#xff09;&#xff0c;主导着数据的流动&#xff0c;每一个程序都相当于一个客户&#xff08;Client&…

一)golang的单例模式

在23种设计模式中&#xff0c;单例模式作为最普遍运用的设计模式之一&#xff0c;在软件开发中起着非常重要的地位。 应用场景&#xff1a;对资源单一且有严格控制的场景&#xff0c;例如. 数据库连接类对象&#xff1a;可一次创建&#xff0c;一直使用的类 在golang中的单例模…

非洲动保组织为保护野生动物导入AI辨识镜头

非洲有许多野生动物受到盗猎者的威胁&#xff0c;但守护动物的巡守人力却远远不足以防止盗猎者的偷袭。为了保护野生动物不被盗猎&#xff0c;近来广受运用的人工智能&#xff08;AI&#xff09;就派上了用场。非洲是一片广袤的大陆&#xff0c;国家公园或保育区的范围相当广大…

python基本装饰器

#基本代码&#xff1a;import timedef decoratorrunlog_args(logval):print("logval is runing"str(logval))def decoratorrunlog(func):print("outerlog is runing")def inner(*args,**kwargs):print("innerlog is runing")stime time.time()t…

ESLint简介

ESLint简介 ESLint是一个用来识别 ECMAScript 并且按照规则给出报告的代码检测工具&#xff0c;使用它可以避免低级错误和统一代码的风格。如果每次在代码提交之前都进行一次eslint代码检查&#xff0c;就不会因为某个字段未定义为undefined或null这样的错误而导致服务崩溃&…

IIS集中化管理与编程REST API

IIS集中化管理与编程REST API 目录 一、 简介 二、 安装 三、 IIS Administration配置文件 四、 Web UI管理界面 五、 IIS Administration API 一、简介 Microsoft IIS Administration 微软提供&#xff0c;管理IIS配置的REST API 和集中化IIS管…

一对多聊天室

/** * 实现一对多聊天室的服务端 * */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket;/*** 接受客户端发送消息的线程类*/ class ChatR…