标签:dde UNC tool span OLE button rgba 类型 turn
async函数简洁点说就是Generator函数的语法糖。
示例:一个读取文件的异步操作,逐步执行,使用Generator函数执行
1 const fs = require(‘fs‘) 2 3 const readFile = function (fileName) { 4 return new Promise(function (resolve, reject) { 5 fs.readFile(fileName, function (error, data) { 6 if (error) return reject(error); 7 resolve(data); 8 }); 9 }) 10 } 11 12 const gen = function* (){ 13 const f1 = yield readFile(‘./a‘) 14 const f2 = yield readFile(‘./b‘) 15 console.log("文件读取结束"); 16 }
使用async函数执行:
1 const gen = async function (){ 2 const f1 = await readFile(‘./a‘) 3 const f2 = await readFile(‘./b‘) 4 console.log("文件读取结束"); 5 }
可以看到,async函数就是将Generate函数的星号(*)替换成async,将yield替换为await而已。
async函数对Generator函数的改进体现在以下四点:
async
函数的执行,与普通函数一模一样,只要一行
asyncReadFile();
上面代码调用了asyncReadFile函数,然后就会自动执行,输出最后结果。
async
表示函数里有异步操作,await
表示紧跟在后面的表达式需要等待结果。co
模块。co
模块约定,yield
命令后面只能是 Thunk 函数或 Promise 对象,而async
函数的await
命令后面,可以是 Promise 对象和原始类型的值(数值、字符串和布尔值,但这时会自动转成立即 resolved 的 Promise 对象)
标签:dde UNC tool span OLE button rgba 类型 turn
原文地址:https://www.cnblogs.com/codexlx/p/14386314.html