async await function equivalent to generator function

  var getSyncTime = function () {
    return new Promise((resolve, reject) => {
      try {
        let startTime = new Date().getTime()
        setTimeout(() => {
          let endTime = new Date().getTime()
          let data = endTime - startTime
          resolve(data)
        }, 500)
      } catch (err) {
        reject(err)
      }
    })
  }

  var getSyncData = async function () {
    let time = await getSyncTime()
    let data = `endTime - startTime = ${time}`
    return data
  }

  var getData = async function () {
    let data = await getSyncData();
    console.log(data)
  }

  getData() 



  async await 函数  等价的 generator  函数
function run(generator) {
    var it = generator();
    function go(result) {
      if (result.done) {
        return result.value;
      }
      return result.value.then(function (value) {
        return go(it.next(value));
      }, function (error) {
        return go(it.throw(error));
      })
    }
    go(it.next());
  }



  var getSyncTime = function () {
    return new Promise((resolve, reject) => {
      try {
        let startTime = new Date().getTime()
        setTimeout(() => {
          let endTime = new Date().getTime()
          let data = endTime - startTime
          resolve(data)
        }, 500)
      } catch (err) {
        reject(err)
      }
    })
  }

  var getSyncData = function* () {
    let time = yield getSyncTime()
    let data = `endTime - startTime = ${time}`
    return data
  }


  run(function* () {
    let data = yield* getSyncData();
    console.log(data)
  })

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326191095&siteId=291194637