ES6 的 promise 和 ES7 的 async 与 await

// async 是让方法变成异步
// await 是等待该代码执行完成后(会阻塞程序执行),再往下执行。
// --------------------------------------------------
/**
// 普通方法
function getData() {
  return "这是一个数据";
}
console.log(getData()); //返回: 这是一个数据
 */

// --------------------------------------------------
// async可以让普通方法变成一个promise的异步方法
/*
async function getData() {
  return "这是一个数据";
}
console.log(getData()); //返回 : Promise { '这是一个数据' }
 */

// --------------------------------------------------

// 如何获取异 async 步方法里面的数据
/*
// 获取异步方法里面的数据:方式一(类似于回调)
async function getData() {
  return "这是一个数据";
}
var p = getData();
p.then(function (data) {
  console.log(data); // 这是一个数据
});

 */
// --------------------------------------------------
/*
function getData() {
  return "这是一个数据";
}
async function test() {
  var d = await getData();
  console.log(d); //返回: 这是一个数据
}
test();
 */

// await 阻塞的功能,可以把异步方法改成同步方法--------------
/*
function getData() {
  console.log(2)
  return "这是一个数据";
}
async function test() {
  console.log(1)
  var d = await getData();
  console.log(3);
  console.log(d); //返回: 这是一个数据
  console.log(4)
}
test();//输出顺序 1 2 3  这是一个数据  4
 */

// 通常的async 和 await 的使用,await 必须在async 里边才能使用,否则会造成阻塞-------
/*
function getData() {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      var username = "张三";
      resolve(username);
    }, 1000);
  });
}

async function test() {
  var data = await getData();
  console.log(data); // 张三
}
test();
 */

// --------------------------------------------------
/*
var getData = () => {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      var username = "张三";
      resolve(username);
    }, 1000);
  });
};

async function test() {
  var data = await getData();
  console.log(data); // 张三
}
test();
 */

// -----------------------------------------------------------------------------

 

posted @ 2021-01-20 17:55  半遮  阅读(149)  评论(0编辑  收藏  举报