const runningPromises = []; let stopSignal = false; let stoppingTask = null; export const PromiseCanceled = Symbol('canceled'); export function wPromise(promise, tag) { const id = runningPromises.length; promise._id = id; promise._tag = tag; runningPromises.push({ promise, reject: null }); return promise.then(function(params) { runPendingReject(promise); if(stopSignal) { return Promise.reject(PromiseCanceled); } return params; }).catch(function(e) { runPendingReject(promise); return Promise.reject(e); }) }代码中的Symbol是用来做什么的
时间: 2024-03-28 07:40:04 浏览: 40
JavaScript ES6中const、let与var的对比详解
5星 · 资源好评率100%
Symbol 是 ES6 中新增的一种基本数据类型,用于表示一个独一无二的值。在这段代码中,PromiseCanceled 就是一个 Symbol 常量,用于表示 Promise 被取消的状态。由于 Symbol 值是独一无二的,因此可以确保 PromiseCanceled 和其他可能出现的值不会重复。
在这段代码中,PromiseCanceled 的作用是在全局变量 stopSignal 为 true 时,将 Promise 的状态改为 rejected,并返回 PromiseCanceled。这样做的目的是为了在某些情况下,能够及时取消正在执行的 Promise,避免出现不必要的等待或阻塞。
阅读全文