博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ES6--async函数
阅读量:2441 次
发布时间:2019-05-10

本文共 1752 字,大约阅读时间需要 5 分钟。

async

async 是 ES7 才有的与异步操作有关的关键字,和 Promise , Generator 有很大关联的。

语法

async function name([param[, param[, ... param]]]) {
statements }
  • name: 函数名称。
  • param: 要传递给函数的参数的名称。
  • statements: 函数体语句。

返回值

async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。

async function helloAsync(){
return "helloAsync"; } console.log(helloAsync()) // Promise {
: "helloAsync"} helloAsync().then(v=>{
console.log(v); // helloAsync})

async 函数中可能会有 await 表达式,async 函数执行时,如果遇到 await 就会先暂停执行 ,等到触发的异步操作完成后,恢复 async 函数的执行并返回解析值。

await 关键字仅在 async function 中有效。如果在 async function 函数体外使用 await ,你只会得到一个语法错误。

function testAwait(){
return new Promise((resolve) => {
setTimeout(function(){
console.log("testAwait"); resolve(); }, 1000); });} async function helloAsync(){
await testAwait(); console.log("helloAsync"); }helloAsync();// testAwait// helloAsync

await

await 操作符用于等待一个 Promise 对象, 它只能在异步函数 async function 内部使用。

语法

[return_value] = await expression;//expression: 一个 Promise 对象或者任何要等待的值。

返回值

返回 Promise 对象的处理结果。如果等待的不是 Promise 对象,则返回该值本身。

如果一个 Promise 被传递给一个 await 操作符,await 将等待 Promise 正常处理完成并返回其处理结果。

function testAwait (x) {
return new Promise(resolve => {
setTimeout(() => {
resolve(x); }, 2000); });} async function helloAsync() {
var x = await testAwait ("hello world"); console.log(x); }helloAsync ();// hello world

正常情况下,await 命令后面是一个 Promise 对象,它也可以跟其他值,如字符串,布尔值,数值以及普通函数。

function testAwait(){
console.log("testAwait");}async function helloAsync(){
await testAwait(); console.log("helloAsync");}helloAsync();// testAwait// helloAsync

await针对所跟不同表达式的处理方式:

  • Promise 对象:await 会暂停执行,等待 Promise 对象 resolve,然后恢复 async 函数的执行并返回解析值。
  • 非 Promise 对象:直接返回对应的值。

转载地址:http://mxsqb.baihongyu.com/

你可能感兴趣的文章
python快速排序_Python快速排序
查看>>
人工神经网络导论_神经网络导论
查看>>
C ++ STL无序多集– std :: unordered_multiset
查看>>
深度学习导论
查看>>
go-back-n_iMyFone D-Back iPhone数据恢复
查看>>
MailboxValidator –批量电子邮件列表清理服务
查看>>
机器学习中常见的最优化算法_最常见的机器学习算法
查看>>
css图片和边框之间有间隔_CSS和CSS3之间的区别
查看>>
iphone浏览器劫持修复_修复iPhone卡在Apple徽标问题上的问题
查看>>
5个最佳Python机器学习IDE
查看>>
c语言中定义和声明的区别_C中声明和定义之间的区别
查看>>
python插入排序_Python插入排序
查看>>
机器学习python 库_最佳Python机器学习库
查看>>
c++变量_C ++变量
查看>>
机器学习ml_机器学习简介(ML)
查看>>
c# 搜索 二进制_C中的二进制搜索
查看>>
stl:map用法_C ++ STL无序映射– std :: unordered_map
查看>>
c++ 意外的令牌标识符_C ++令牌–关键字,常量,标识符,字符串,运算符和特殊符号
查看>>
stl set是无序的_C ++ STL无序集– std :: unordered_set
查看>>
stl multimap_C ++ STL多图容器– std :: multimap
查看>>