js look

71 阅读1分钟
var p = new Promise((resolve, reject) => {
    reject(Error('The Fails!'))
  })
   
  p.catch(error => console.log(error.message))
  p.catch(error => console.log(error.message))





  var p = new Promise((resolve, reject) => {
    return Promise.reject(Error('The Fails!'))
  })
   
  p.catch(error => console.log(error.message))
  p.catch(error => console.log(error.message))





  var p = new Promise((resolve, reject) => {
    reject(Error('The Fails!'))
  })
  .catch(error => console.log(error))
  .then(error => console.log(error))





  var p = new Promise((resolve, reject) => {
    reject(Error('The Fails!'))
  })
  .catch(error => console.log(error.message))
  .catch(error => console.log(error.message))





  new Promise((resolve, reject) => {
    resolve('Success!')
  })
  .then(() => {
    throw Error('Oh noes!')
  })
  .catch(error => {
    return "actually, that worked"
  })
  .catch(error => console.log(error.message))







  Promise.resolve('Success!')
  .then(data => {
    return data.toUpperCase()
  })
  .then(data => {
    console.log(data)
  })






  Promise.resolve('Success!')
  .then(data => {
    return data.toUpperCase()
  })
  .then(data => {
    console.log(data)
    return data
  })
  .then(console.log)







  Promise.resolve('Success!')
  .then(data => {
    data.toUpperCase()
  })
  .then(data => {
    console.log(data)
  })





  Promise.resolve('Success!')
  .then(() => {
    throw Error('Oh noes!')
  })
  .catch(error => {
    return 'actually, that worked'
  })
  .then(data => {
    throw Error('The fails!')
  })
  .catch(error => console.log(error.message))






  var promise = new Promise(function (resolve, reject) {
    setTimeout(function () {
        resolve(1);
    }, 3000)
})
// 打印结果是??
promise
    .then(() => {
        return Promise.resolve(2)
    })
    .then(n => {
        console.log(n)
    })


// 打印结果是??
promise
    .then(() => {
        return 2
    })
    .then(n => {
        console.log(n)
    })


// 打印结果是??
promise.then(2).then(n => {
    console.log(n)
})










const promise = new Promise((resolve, reject) => {
    resolve('success1');
    reject('error');
    resolve('success2');
});

promise
    .then((res) => {
        console.log('then: ', res);
    })
    .catch((err) => {
        console.log('catch: ', err);
    });







    Promise.resolve()
    .then(() => {
        return new Error('error!!!')
    })
    .then((res) => {
        console.log('then: ', res)
    })
    .catch((err) => {
        console.log('catch: ', err)
    })






    Promise.resolve(1)
  .then(2)
  .then(Promise.resolve(3))
  .then(console.log)




  const promise = new Promise((resolve, reject) => {
    console.log(1)
    resolve()
    console.log(2)
  })
  promise.then(() => {
    console.log(3)
  })
  console.log(4)





  const first = () => (new Promise((resolve, reject) => {
    console.log(3);
    let p = new Promise((resolve, reject) => {
        console.log(7);
        setTimeout(() => {
            console.log(5);
            resolve(6);
        }, 0)
        resolve(1);
    });
    resolve(2);
    p.then((arg) => {
        console.log(arg);
    });
 
}));
 
first().then((arg) => {
    console.log(arg);
});
console.log(4);






Promise.resolve().then(() => {
    console.log('promise1');
    const timer2 = setTimeout(() => {
      console.log('timer2')
    }, 0)
  });
  const timer1 = setTimeout(() => {
    console.log('timer1')
    Promise.resolve().then(() => {
      console.log('promise2')
    })
  }, 0)
  console.log('start');
  




  setTimeout(() => {
    console.log('timer1');
    setTimeout(() => {
      console.log('timer3')
    }, 0)
  }, 0)
  setTimeout(() => {
    console.log('timer2')
  }, 0)
  console.log('start')
  





  setTimeout(() => {
    console.log('timer1');
    Promise.resolve().then(() => {
      console.log('promise')
    })
  }, 0)
  setTimeout(() => {
    console.log('timer2')
  }, 0)
  console.log('start')
  






  const promise = new Promise((resolve, reject) => {
    console.log(1);
    setTimeout(() => {
      console.log("timerStart");
      resolve("success");
      console.log("timerEnd");
    }, 0);
    console.log(2);
  });
  promise.then((res) => {
    console.log(res);
  });
  console.log(4);
  






  async function foo() {
    console.log("foo")
  }
   
  async function bar() {
    console.log("bar start")
    await foo()
    console.log("bar end")
  }
   
  console.log("script start")
   
  setTimeout(function () {
    console.log("setTimeout")
  }, 0)
   
  bar()
   
  new Promise(function (resolve) {
    console.log('promise start')
    resolve()
  }).then(function () {
    console.log('promise end')
  })
   
  console.log("script end")







  async function asy1() {
    console.log(1)
    await asy2()
    console.log(2)
  }
   
  const asy2 =async () => {
    await setTimeout(() => {
      Promise.resolve().then(() => {
        console.log(3)
      });
      console.log(4)
    })
  } 
   
  const asy3 = async () => {
    Promise.resolve().then(() => {
      console.log(6)
    });
  }
   
  asy1()
  console.log(7)
  asy3()






//   手写 .all方法
// 手写.race