首页 > 其他分享 >Promise、Async

Promise、Async

时间:2023-01-07 23:22:26浏览次数:33  
标签:promises fs arr readFile let Promise Async

const fs = require('fs')
const util = require('util')
let readFile = util.promisify(fs.readFile)

let isPromise = (x) => {
    if ((typeof x === 'object' && x != null) || typeof x === 'function') {
        if (typeof x.then === 'function') {

            return true
        }
    }
    return false;
}

Promise.all = (promises) => {
    console.log('all')
    return new Promise((resolve, reject) => {
        let arr = []
        let idx = 0
        let promisesData = (value, index) => {
            arr[index] = value
            if (++idx === promises.length) {
                resolve(arr)
            }
        }
        for (let i = 0; i < promises.length; i++) {
            let x = promises[i]
            if (isPromise(x)) {
                x.then(y => {
                    promisesData(y, i)
                }, reject)
            } else {
                promisesData(x, i)
            }
        }
    })
}

Promise.all([1, readFile('./name.txt', 'utf-8'), readFile('./age.txt', 'utf-8'), 3])
    .then(data => {
        console.log(data)
    })

 

标签:promises,fs,arr,readFile,let,Promise,Async
From: https://www.cnblogs.com/z-bky/p/17033858.html

相关文章

  • day02-Promise
    Promise1.Promise基本介绍Promise是异步编程的一种解决方案,可以解决传统Ajax回调函数嵌套问题。传统的Ajax异步调用在需要多个操作的时候,会导致多个回调函数嵌套,导致代......
  • 如何给所有的 await async 函数添加try/catch?
    如何给所有的awaitasync函数添加try/catch?做全局捕获异常。面试官:如何给所有的awaitasync函数添加try/catch?做全局捕获异常。我们可以使用window.addEventListene......
  • 如何在forEach内使用异步调用 async/await
    翻自:HowtouseasyncandawaitinaforEachJSloop?https://learn.coderslang.com/0144-how-to-use-async-and-await-in-a-foreach-js-loop/事实上我们无法在forEa......
  • 箭头函数与promise
    console.log("普通函数方式");vararr1=[1,2,3,4,5];arr1.forEach(function(e){console.log(e);});console.log("箭头函数......
  • Spring Boot中@Async的作用
    importorg.springframework.context.annotation.AnnotationConfigApplicationContext;importorg.springframework.context.annotation.Bean;importorg.springframewo......
  • @Async异步注解的使用
    @Async简介使用spring快速开启异步执行服务的注解应用场景同步:同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果。异步:异步调用则是只是发送了调用的指......
  • Uncaught (in promise) Neo4jError: WebSocket connection failure. Due to security
    问题使用​​vue-neo4j​​​连接​​neo4j​​数据库时,控制栏出现以下问题:neo4j版本为4.4.5​​Uncaught(inpromise)Neo4jError:WebSocketconnectionfailure.Dueto......
  • promise构造函数也是异步的吗
    constp=newPromise((res,rej)=>{console.log('我是Promise')//1res('我是resolve')})console.log('我是主线程')//2p.then(res=>console......
  • 【面试题】面试官:为什么Promise中的错误不能被try/catch?
    大厂面试题分享面试题库前端面试题库(面试必备) 地址:​​前端面试题库​​前言之前我写过一篇文章,讨论了为什么​​asyncawait​​​中的错误可以被​​trycatch​​​......
  • SpringBoot - 异步任务 @EnableAsync,@Async
    1.在启动类上添加@EnabnleAsync注解开启对异步任务的支持//开启对异步任务的支持@EnableAsync@SpringBootApplicationpublicclassLearn20221218Application{p......