promise

初识Promise


var promiseCount = 0

function testPromise() {

   var thisPromiseCount = ++promiseCount

   var log = 0

   log = '开始(同步代码开始)'

  console.log(log)

  // 我们创建一个新的promise: 然后用'result'字符串完成这个promise (3秒后)

  var p1 = new Promise(function (resolve, reject) {

  // 完成函数带着完成(resolve)或拒绝(reject)promise的能力被执行

  log = thisPromiseCount + '' + 'Promise开始(异步代码开始)'

  console.log(log)

  // 这只是个创建异步完成的示例

   window.setTimeout(function () {

       // 我们满足(fullfil)了这个promise!

       // console.log('set')

       resolve(thisPromiseCount)

       }, Math.random() * 2000 + 1000)

});

// 定义当promise被满足时应做什么

p1.then(function (val) {

   // 输出一段信息和一个值

   log = val + '' + 'Promise被满足了(异步代码结束)'

   console.log(log)

});

log = thisPromiseCount + '' + '建立了Promise(同步代码结束)'

console.log(log)

}

上面是从MDN改写的例子,它的结果是

最后一条是3秒后才跳出来的。即使没有定时器,p1.then(function (val)也是最后调用的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • //本文内容起初摘抄于 阮一峰 作者的译文,用于记录和学习,建议观者移步于原文 概念: 所谓的Promise,...
    曾经过往阅读 1,256评论 0 7
  • 特点 Promise能将回调分离出来,在异步操作执行之后,用链式方法执行回调,虽然es5用封装函数也能实现,但是如...
    一二三kkxx阅读 636评论 0 1
  • Promsie 通俗来说,Promise就是一个承诺,例如,我承诺明年要赚1百万,then方法中的onFulfil...
    老虎爱吃母鸡阅读 461评论 0 0
  • 去年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范。作为ES6...
    yzc123446阅读 298评论 0 1
  • 本文适用的读者 本文写给有一定Promise使用经验的人,如果你还没有使用过Promise,这篇文章可能不适合你,...
    HZ充电大喵阅读 7,340评论 6 19