ES8——await 和 async

async 用来声明 async 函数

async function demo() {}
console.log(demo());  //Promise {<fulfilled>: undefined} 一个promise对象

await 表达式

  • await 必须放在 async 函数内
let p = new Promise((resolve, reject) => {
  //resolve("成功的值");
  reject("失败的值");
});

async function main() {
  try {
    let result = await p;
    console.log(result);  //p的状态为true就会执行这里的语句
  } catch (error) {
    console.log(error);  //p的状态为false就会打印error
  }
}
main();

async 和 awiat结合

  • 读取文件
const fs = require('fs');
function read1() {
  return new Promise((resolve, reject) => {
    fs.readFile("./t1.txt", (err, data) => {
      if (err) reject(err);
      resolve(data);
    });
  });
}
function read2() {
  return new Promise((resolve, reject) => {
    fs.readFile("./t2.txt", (err, data) => {
      if (err) reject(err);
      resolve(data);
    });
  });
}
async function main() {
  let r1 = await read1();
  let r2 = await read2();
  console.log(r1.toString());
  console.log(r2.toString());
}
main();
  • 发送请求
function sendAxaj(url) {
  return new Promise((resolve, reject) => {
    let x = new XMLHttpRequest();
    x.open("GET", url);
    x.send();
    x.onreadystatechange = function () {
      if (x.readyState === 4) {
        if (x.status >= 200 && x.status < 300) {
          resolve(x.response);
        } else {
          reject(x.status);
        }
      }
    }
  });
}
async function main() {
  let res = await sendAxaj("http://127.0.0.1:3000/test");
  console.log(res);
}
main();

posted on 2021-08-10 01:11  In-6026  阅读(53)  评论(0)    收藏  举报

导航