async/await、promise 遍历

for 遍历语句


async function run() {
  for (let i = 0; i < 2; i++) {
    for (let j = 0; j < 2; j++) {
      await new Promise(resolve => {
        setTimeout(async () => {
          await new Promise(resolve => {
            setTimeout(() => {
              console.log(1)
              resolve()
            }, 3000)
          })
          console.log(2)
          resolve()
        }, 2000)
      })
    }
  }
  console.log(3)
}
run()
console.log(0)

// 输出顺序
// 0
// 1
// 2
// 1
// 2
// 1
// 2
// 1
// 2
// 3

需要注意的是,async 的影响范围只在其作用函数方法内,所以先输出 ‘0’;再则根据 await 一层一层地往里面执行,resolve 不能改名,且必须要在执行完各项操作后返回,否则会中断其后所有操作!

forEach 方法遍历


async function run() {
  let arr = []
  let target = [1, 2]
  target.forEach(i => {
    arr.push(
      new Promise(resolve => {
        setTimeout(() => {
          console.log(1)
          resolve()
        })
      })
    )
  })
  await Promise.all(arr).then(val => {
    console.log(2)
  })
  console.log(3)
}
run()
console.log(0)

// result
// 0
// 1
// 1
// 2
// 3

原文地址:https://www.cnblogs.com/fiy-noob/p/10910484.html

时间: 2024-10-08 12:04:26

async/await、promise 遍历的相关文章

理解koa2 之 async + await + promise

koa是下一代的Node.js web框架. 我们首先使用koa来实现一个简单的hello world吧!假如目前的项目结构如下: ### 目录结构如下: koa-demo1 # 工程名 | |--- app.js # node 入口文件 | |--- node_modules # 项目依赖包 | |--- package.json app.js 代码如下: const Koa = require('koa'); const app = new Koa(); app.use(async (ctx

async await promise

async 异步函数,以后可能会用得很广. 1.箭头函数: 没有{}时不写return 也有返回值 2.Promise : 异步神器,很多异步api都是基于Promise 3.new Promise().then().then().catch() :第一个then触发条件:是 Promise() 实例化时resolve()触发, 第二个及以后的then() 触发条件是前一个then() 代码被执行一遍,不包括异步代码,如果有return,后面的代码不再执行,并且将return值作为下一个then

async包 ES6 async/await的区别

最基本的async 包 ApCollection.find({}).toArray(function (err, aps) { var num = 0; async.whilst( function () { return num++ < aps.length; }, function (callback) { if (aps[num]) { var apmac = aps[num].AP_MAC; ApHeartCollection.findOne({ AP_MAC: apmac, time:

小程序里使用es7的async await语法

我们做小程序开发时,有时候想让自己代码变得整洁,异步操作时避免回调地狱.我们会使用es6的promise. es7的async,await .promise在小程序和云开发的云函数里都可以使用. async和await只能在云开发的云函数里使用.我们在小程序的代码里直接使用,就会报如下错误. 这个报错就是告诉我们不能在小程序里直接使用es7的async和await语法.但是这么好的语法我们用起来确实显得代码整洁,逼格高.那接下来我就教大家如何在小程序代码里使用es7的async和await语法.

node.js异步控制流程 回调,事件,promise和async/await

写这个问题是因为最近看到一些初学者用回调用的不亦乐乎,最后代码左调来又调去很不直观. 首先上结论:推荐使用async/await或者co/yield,其次是promise,再次是事件,回调不要使用. 接下来是解析,为什么我会有这样的结论 首先是回调,理解上最简单,就是我把任务分配出去,当你执行完了我就能从你那里拿到结果执行相应的回调, 这里演示一个对setTimeout的封装,规定时间后打印相应结果并执行回调函数 并且这个函数传给回调函数的参数符合node标准,第一个为error信息,如果出错e

JavaScript 的 Async\/Await 完胜 Promise 的六

参考:http://www.10tiao.com/html/558/201705/2650964601/1.html Node 现在从版本 7.6 开始就支持 async/await 了. 简介: Async/await 是一种编写异步代码的新方法.之前异步代码的方案是回调和 promise. Async/await 实际上是建立在 promise 的基础上.它不能与普通回调或者 node 回调一起用. Async/await 像 promise 一样,也是非阻塞的. Async/await 让

JavaScript异步编程——Async/Await vs Promise

兼容性 提醒一下各位,Node 现在从版本 7.6 开始就支持 async/await 了.而就在前几天,Node 8已经正式发布了,你可以放心地使用它. 如果你还没有试过它,这里有一堆带有示例的理由来说明为什么你应该马上采用它,并且再也不会回头. Async/await  对于那些从未听说过这个话题的人来说,如下是一个简单的介绍: Async/await 是一种编写异步代码的新方法.之前异步代码的方案是回调和 promise. Async/await 实际上是建立在 promise 的基础上.

js callback promise async await 几种异步函数处理方式

***callback  这个是最常用的也是最简单的 ,比如在ajax网络请求中,返回请求完成返回的数据 回调函数就是把一个函数当成另一个函数的参数,可以传递函数内的局部变量,也可以异步完成一些操作,在函数的实现里调用回调函数,在函数的调用里实现回调函数 // 回調函數的方式 閉包 可以獲取函數內部的局部變量 function testCallback(callback) { let a = 1; let b = 2; if (a < b) { callback && callbac

Promise和Async/Await用法整理

1.Promise 1.简介 Promise,简单来说就是一个容器,里面保存着某个未来才会结束的时间(通常是一个异步操作的结果) Promise对象的基本语法: new Promise((resolve,reject) => { //..... }); 从语法上来说,Promise是一个对象,从它可以获取异步操作的消息. 基本语法: let p = new Promise((resolve,reject) => { //... resolve('success') }); p.then(res