Die Versprechenliste wird sequentiell ausgegeben und jede asynchrone Operation wird parallel ausgeführt

Der Kern dieser Ausgabe ist das Highlight

  1. Jeder asynchrone Vorgang wird gleichzeitig ausgeführt
  2. Geben Sie die Ergebnisse in der Reihenfolge des Arrays aus

  function createPromise(value, time) {
    
    
    return new Promise((resolve, reject) => {
    
    
      setTimeout(() => {
    
    
        resolve(value)
      }, time)
    })
  }

  let list = [
    createPromise(1, 1000),
    createPromise(2, 6000),
    createPromise(3, 4000),
    createPromise(4, 3000),
  ];

  let last = -1;

  function print(data, index) {
    
    
    // 前边的输出 没输出完,直接return
    if (index - last === 1) {
    
    
      // 检查后边的,后边没有,退出,有,输出
      while (data[index] !== undefined) {
    
    
        console.log(data[index])
        last = +index;
        index++;
      }
    }
  }

  let proxy = new Proxy({
    
    }, {
    
    
    set(target, p, value, receiver) {
    
    
      target[p] = value;
      print(target, p);
    }
  });

  function run(promiseList) {
    
    
    for (let a = 0; a < promiseList.length; a++) {
    
    
      let p = promiseList[a];
      p.then(r => {
    
    
        proxy[a] = r;
      })
    }
  }

  run(list)

Ich denke du magst

Origin blog.csdn.net/qq_29334605/article/details/114534524
Empfohlen
Rangfolge