js Promise 延时任务

原文链接: js Promise 延时任务

上一篇: mpvue 开发小程序 流程

下一篇: 使用环形队列触发延时任务

简单延时

使用Promise模拟延时任务

function getMsg() {
  return new Promise(
    (resolve, reject) => {
      setTimeout(() => resolve('hello promise'), 1000)
    }
  )
}


async function fun() {
  console.log('aaa')
  let ret = await getMsg()
  console.log('bbb', ret)
  return ret
}

console.log('getMsg', getMsg())
console.log('fun', fun())

其中bbb 会在1s后输出

getMsg Promise { <pending> }
aaa
fun Promise { <pending> }
bbb hello promise

all和race

function task1() {
  return new Promise(
    (resolve, reject) => {
      setTimeout(() => resolve('task1'), 1000)
    }
  )
}

function task2() {
  return new Promise(
    (resolve, reject) => {
      setTimeout(() => resolve('task2'), 500)
    }
  )
}

function task3() {
  return new Promise(
    (resolve, reject) => {
      setTimeout(() => resolve('task3'), 1500)
    }
  )
}


async function all() {
  let all = await Promise.all([task1(), task2(), task3()])
  console.log(all)
}

async function race() {
  let ret = await Promise.race([task1(), task2(), task3()])
  console.log(ret)
}

console.log('aaa')
all()
console.log('bbb')
race()
console.log('ccc')

结果分析

aaa
bbb
ccc
task2
[ 'task1', 'task2', 'task3' ]

异步的主要思想是事件循环

首先安装顺序输出

aaa

bbb

ccc

然后race中task2 执行时间最短,所以先输出

然后all执行完毕后输出三个结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值