async 函数
在函数前使用 async
关键字,该函数称为 async
函数,即异步函数。JavaScript 中每个异步函数都是 AsyncFunction
的对象,其中允许使用 await
关键字,基于 Promise
的异步行为。
async
函数可能包含0个或者多个 await
表达式,await
表达式会暂时停止整个 async
函数的执行进程并让出其控制权,当等待的基于 Promise
的异步操作被 resolve
或者 reject
后才会恢复进程。Promise
的值辉呗当作 await
表达式的值
异步函数.then(表达式)
then
方法用于异步执行,当 then
前的方法执行完再执行 then
中的函数体,可以有效地避免异步函数执行时获取不到其返回值的情况,语法如下:
promise.then(onCompleted, onRejected)
//
promise -- 必需,Promise对象,异步函数可以返回
onCompleted -- 必需,Promise对象完成时进行的函数
onRejected -- 选,拒绝时进行的函数
// 示例
return imageminPngquant()(pre_buffer).then(
function (buffer) {
console.log(buffer);
return buffer;
}
);
// 相当于
// imageminPngquant()(pre_buffer)返回buffer作为function的参数
总结
在 Js 中使用异步函数,建议使用 then
表达式去进行函数的异步执行,async/await
较难操作,容易拿不到异步函数返回的值。