长期以来,掌握单线程javascript 运行时的异步行为一直都是个艰巨的任务。随着ES6 新增了期约 和 ES8 新增了异步函数, ECMAScript 的异步编程特性有了长足的进步。 通过期约和async/await, 不仅可以实现之前难以实现或不可能实现的任务,而且也能写出更清晰、简洁,并且容易理解、调试的代码。
期约的主要功能是为异步代码提供了清晰的抽象。可以用期约表示异步执行的代码块,也可以用期约表示异步计算的值。 在需要串行异步代码时,期约的价值最为突出。作为可塑性极强的一种结构,期约可以被序列化 、连锁使用、复合、扩展和重组。
异步函数将期约应用于javascript 函数的结果。 异步函数可以暂停执行, 而不阻塞主线程。 无论是编写基于期约的代码, 还是组织串行或平行执行的异步代码,使用异步函数都非常得心应手。异步函数可以说是现代javascript 工具箱中最重要的工具之一。