深入理解Promise对象

promise初级用法

const testPath = path.join(__dirname, 'test.txt')

const readFileAsync = new Promise((resolve, reject) => {
  const data = readFile(testPath, 'utf8', (data, err) => {
    if (data) resolve(data)
    else reject(err)
  })
})

readFileAsync.then((data) => {
  console.log(data)
}, (err) => {
  console.log(err)
})

这段代码中readFileAsync.then()会立即执行


包装高阶函数, 让异步函数可以传递参数

const testPath = path.join(__dirname, 'test.txt')

const readFileAsync = (path) => {
  return new Promise((resolve, reject) => {
    readFile(path, 'utf8', (data, err) => {
      if (data) resolve(data)
      else reject(err)
    })
  })
}

readFileAsync(testPath).then((data) => {
  console.log(data)
}, (err) => {
  console.log(err)
})

通过async-await函数使用:

;(async () => {
  try {
    const data = await readFileAsync(testPath)
    console.log(data)
  } catch (err) {
    console.log(err)
  }
})()


setTimeout延迟执行

const sleep = (time) => {
  return new Promise((resolve, reject) => {
    setTimeout(resolve, time)
  })
}

sleep(2000).then(()=>{console.log('过了两秒钟打印');})
// 或者通过这种方法
;(async () => {
  await sleep(2000)
  console.log('run in 2s')
})()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值