当前位置:嗨网首页>书籍在线阅读

09-创建promise

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

14.3.1 创建promise

创建promise的方式很直接:创建一个带有函数的promise实例,它应该包含一个resolve(满足)和reject的回调(看吧,前面曾提醒过,就算使用了promise,还是需要回调函数)。继续看coundown函数,给它指定参数(这样就能设置5秒以上的倒计时了),当倒计时结束时返回一个promise:

function countdown(seconds) {
   return new Promise(function(resolve, reject) {
      for(let i=seconds; i>=0; i--) {
         setTimeout(function() {
            if(i>0) console.log(i + '...');
            else resolve(console.log("GO!"));
         }, (seconds-i)*1000);
      } 
   });
} 

这个函数现在还不太灵活。大家并不想使用相同的方式,或者压根不想用控制台。如果想用countdown来更新网页中的DOM元素,效果可能就不太理想了。但这只是开始,它演示了如何创建一个promise。要注意 resolve (就像 reject )是一个函数。大家可能会想“哈!可以多次调用resolve,从而跳出……呃,promise的promise。”的确可以多次调用 resolve 或者 reject ,甚至一起调用…但是只有第一次调用时会起作用。promise可以保证的是,不管谁使用了promise,都只会得到一个满足或者拒绝的响应(目前,所讲的函数中还未涉及拒绝的路径)。