hechengjin 发表于 2016-3-26 17:01:31

Promise用法

'use strict'

let Deferred = function () {
this.promise = new Promise((resolve, reject) => {
    this.resolve = resolve
    this.reject = reject
})

this.promise.canceled = false
this.promise.cancelers = []
this.promise.cancel = () => {
    this.promise.canceled = true
    for (let canceler of this.promise.cancelers) {
      try {
      canceler()
      } catch (e) {
      console.log(e + e.stack)
      }
    }
}
this.then = this.promise.then.bind(this.promise)
this.catch = this.promise.catch.bind(this.promise)
}

exports.defer = () => new Deferred()
第一次查询

let loadListDeferred = defer()
执行查询
loadListDeferred.then(() => {
    查询结果清除----这里在执行第二次查询时才会执行到
})


第二次查询
if (oadListDeferred) {
   loadListDeferred.resolve()   ----触发上面的then操作
}

hechengjin 发表于 2016-4-15 12:11:18

let loadDeferred = defer()
let finished = false

spawn(function * () {
    while (true) {
      console.log('777777777777777')
      // yield WinJS.Promise.any()
      yield sleep(1000)
      loadDeferred.then(() => {
      finished = true
      })
      if (finished) {
      break
      }
    }
})

top.tryCloseWindow = DoCommandClose.bind(top)

function DoCommandClose () {
let ret = false
loadDeferred.resolve()
console.log('=======================')
top.close()
return ret
}

页: [1]
查看完整版本: Promise用法