/** * 申请缓存,并调用回调 */function cacheRequest(fn) {  let hasReq = 1; // 未申请-1 申请中-2 申请胜利-3  let result = null;  const cals = [];  return function (...args) {    const options = args[0];    const callback = args[1];    function myCallback(res) {      hasReq = 3;      result = res;      for (let i = 0; i < cals.length; i++) {        cals[i](res);      }    }    console.log('hasReq', hasReq)    if (hasReq === 1) {      hasReq = 2      cals.push(callback);      fn(options, myCallback);    } else if (hasReq === 3) {      callback(result);    } else {      cals.push(callback);    }  }}// 应用promisefunction cacheRequest2(fn) {  let p = null;  return function (...args) {    const [options, callback] = args;    if (!p) {      p = new Promise((resolve) => {        fn(options, (res) => {          resolve(res);        })      })    }    p.then(callback);  }}// 应用示例const fn = (options, callback) => {  // 发动申请等,而后调用callback  setTimeout(() => {    callback(1);  });}const cachedReq = cacheRequest2(fn)cachedReq({}, (data) => {  console.log('data', data);})cachedReq({}, (data) => {  console.log('data', data);})setTimeout(() => {  cachedReq({}, (data) => {    console.log('data', data);  })});