美文网首页
18async函数

18async函数

作者: 我_巨可爱 | 来源:发表于2017-11-08 10:31 被阅读0次

和 Generator 区别

  1. 内置执行器,不必使用next等语法,像普通函数的调用一样,调用 async 函数
  2. 使用async等语法,更清晰
  3. await可以是 Promise 对象,可以是 普通类型。co模块约定,yield命令后面只能是 Thunk 函数或 Promise 对象
  4. 返回值是Promise对象

简单案例

async function getStockPrice(name) {
  let stockSymbol = await getStockSymbol(name)
  let stockPrice = await getPrice(stockSymbol)
  return stockPrice
}
getStockPrice('ggoo').then(function (price) {
  console.log(price)
}).catch(function (e){
  console.log(e)
})
  1. 语法asyncawait
  2. await 会将非 Promise 对象包裹成 resolved 状态的 Promise对象
  3. 只有异步执行完成,才会执行下一步
  4. async函数返回的是promise 对象
  5. 感觉就像将 异步执行 装换成 同步执行

语法

  1. 返回的Promise对象,当async函数执行完毕,才会then
  2. await后promise为reject状态,会立刻中断async函数执行,并执行调用方法后的catch
  3. 避免中断
  • await语句放到try-catch
  • await后的promise对象添加上catch方法
// 多次尝试
const superagent = require('superagent');
const NUM_RETRIES = 3;

async function test() {
  let i;
  for (i = 0; i < NUM_RETRIES; ++i) {
    try {
      await superagent.get('http://google.com/this-throws-an-error');
      break;
    } catch(err) {}
  }
  console.log(i); // 3
}

test();

注意点

以下注意点,可以处理错误,提高性能

  1. 多个await语句放在try-catch语句中
  2. await后语句,如果不存在继发关系(等a执行完再执行b),那么让它们同时触发
  3. await 只能用在async 函数中
// 同时触发 --- 方法一
let [foo,bar] =await Promise.all([getFoo(),getBar()])
// 同时触发 --- 方法二
let foo = getFoo()
let bar = getBar()
await foo
await bar

按顺序完成异步操作

如果使用,for,那么将是继发。可以使用map

const textPromises  = urls.map(async function (url) {
  // 这里边是继发,但是外部的map不是
  const response = awatit(url)
return response.text()
})

相关文章

  • 18async函数

    和 Generator 区别 内置执行器,不必使用next等语法,像普通函数的调用一样,调用 async 函数 使...

  • Excel(三)

    AND函数 OR函数 NOT函数 IF函数 频率分析函数FREQUENCY

  • if、else if、for、while、repeat函数

    ①if函数 ②else if函数 ③for函数 ④while函数 ⑤repeat函数

  • strsplit、mapply、paste、match函数

    strsplit函数 mapply函数 strsplit函数 mapply函数 paste函数 match函数 第...

  • Oracle中常用函数(SQL)

    Oracle函授有以下几个分类:数字函数、字符函数、日期函数、转换函数、集合函数、分析函数 数字函数: 字符函数:...

  • MySQL函数

    字符函数 数字运算函数 比较运算符和函数 日期时间函数 信息函数 聚合函数 加密函数 流程函数

  • BI-SQL丨AND & OR & IN

    AND函数 & OR函数 & IN函数 AND函数、OR函数和IN函数都可以理解是WHERE函数的补充,当然也可以...

  • Python之函数

    课程大纲 函数定义 函数的参数 函数的返回值 高阶函数 函数作用域 递归函数 匿名函数 内置函数 函数式编程 将函...

  • 函数基本知识

    函数 函数的定义: def 函数名() 函数的调用:函数名() #不能将函数调用放在函数定义上方 函数的文档注...

  • 积分表——不定期更新

    基本初等函数包括: 常函数: 幂函数 指数函数 对数函数 三角函数 反三角函数 I、反函数Ⅱ、复合函数:初等函数(...

网友评论

      本文标题:18async函数

      本文链接:https://www.haomeiwen.com/subject/opyjmxtx.html