JS Promise代码中resolve、reject有什么作用?前两行代码如何理解?
代码核心逻辑解释
你提供的完整代码如下:
function superSecretOrder(items) { return new Promise(function (resolve, reject) { const random = Math.random() * 1000 setTimeout(function () { resolve([...items].sort()) }, random) }) }
前两行的具体含义
- 第一行
function superSecretOrder(items) {
声明了一个名为superSecretOrder的普通函数,它接收一个形参items,按照你的假设,调用该函数时传入的items就是汽车型号列表数组,函数的核心能力是对传入的列表做异步排序处理。 - 第二行
return new Promise(function (resolve, reject) {
函数执行后会直接返回一个Promise实例,这代表该函数的执行是异步的,你无法直接同步拿到排序结果,必须通过.then()回调或者async/await语法才能获取最终处理后的值。这里传入Promise构造函数的两个参数是JS内置的回调方法:resolve用于异步操作成功时向外传递结果,reject用于异步操作出错时向外抛出错误信息,当前示例代码没有处理异常场景,所以没有用到reject参数。
补充(辅助理解完整逻辑)
后续代码会生成0~1000毫秒的随机延迟,等待延迟结束后,会先通过扩展运算符[...items]对原汽车型号数组做浅拷贝(避免修改你传入的原数组),再调用数组的sort()方法按默认字典序排序,最后通过resolve方法把排序后的数组传递出去。
内容的提问来源于stack exchange,提问作者Ana kamilova
相关产品推荐
相关产品推荐

