NetSuite SuiteScript 依赖的JavaScript版本及引擎技术问询
SuiteScript 对应的 JavaScript 版本与异步函数支持问题
其实不用先去查引擎版本再倒推JS版本,NetSuite 已经把不同 SuiteScript 版本对应的 ECMAScript(ES)支持情况说的明明白白了,直接看这个更省事:
- SuiteScript 1.0:基于 ES3,属于比较老旧的版本,箭头函数、
let/const这些现代语法都不支持,更别提高阶的async/await了。 - SuiteScript 2.x 系列:
- 2.0 和 2.1 版本:主要支持 ES6(ES2015)的大部分特性,但不支持 ES7 引入的
async/await。不过你要是需要处理异步逻辑,可以用 Promise 配合.then()/.catch()来实现,NetSuite 也提供了N/task这类模块来处理异步任务。 - 2.2 及之后的版本:开始支持 ES7+ 的部分特性,其中就包括你问的
async function声明和await语法!不过要注意,不是所有 ES7+ 特性都完全兼容,具体还是要以 NetSuite 官方给出的兼容性清单为准。
- 2.0 和 2.1 版本:主要支持 ES6(ES2015)的大部分特性,但不支持 ES7 引入的
针对你举的例子:如果你的脚本用的是 SuiteScript 2.2 或更高版本,完全可以放心写 async function;但如果是 2.1 及更早的版本,这么写会直接报错,得换成 Promise 或者传统回调的方式来处理异步逻辑。
额外提一句:NetSuite 的脚本引擎确实是基于 V8 的(和 Chrome、Node.js 用的是同一款),不同 SuiteScript 版本对应的 V8 版本不同,进而影响 ES 支持范围,但真的没必要自己去查 V8 和 ES 的对应关系,直接看 NetSuite 给的 SuiteScript 版本说明就够了。
内容的提问来源于stack exchange,提问作者Andrew Castellano
相关产品推荐
相关产品推荐

