代码之家  ›  专栏  ›  技术社区  ›  Qian Chen

如何保证promise中的代码首先在Javascript中运行?

  •  0
  • Qian Chen  · 技术社区  · 5 年前
    function f() {
      setTimeout(()=> {
        console.log(1);
      });
    
      // real situation
      // fetch(...).then(()=>{
      //   console.log(1);
      // });
    }
    
    function g() {
      console.log(2);
    }
    
    f();
    g();
    

    实际输出是2,然后是1。有没有办法先保证1,然后保证2。想象 f 是一个别人的函数或是一个我几乎无法控制的库。

    我真正的应用是我想保证我的代码在函数中的一个承诺中的代码运行之后运行。

    0 回复  |  直到 5 年前
        1
  •  1
  •   lukeskywaka    5 年前
    function f() {
     return new Promise(resolve => {
         resolve(1)     
      }).then(value=>{
          console.log(value)
      })
     }
    
    function g() {
       console.log(2);
    }
    
    const run = async () => {
       await f();
       g();
    }
    
    run();