我正在寻找一种创建延迟对象的方法,该对象将在当前范围之外解决.我喜欢延迟对象,正如我在Chrome 38中看到Promise.defer()返回延迟对象.
但在最新的Firefox 34中,Promise.defer在Safari 8.0中也是未定义的.
所以我现在无法使用Promise.defer.未来状况如何?它会在其他浏览器中实现还是会被淘汰?
解决方法
@H_404_9@ 根据 the MDN article on Deferred,.defer方法已经过时了.如果你看看 this bug issue,它说Promise.defer是非标准的,所以它不可能返回.Starting from Gecko 30,this object is obsolete and should not be used anymore. Use the
new Promise()
constructor instead.
他们提供了一个如何重写Promise.defer代码的例子,而不是使用新的Promise.
Promise.defer
var deferred = Promise.defer(); doSomething(function cb(good) { if (good) deferred.resolve(); else deferred.reject(); }); return deferred.promise;
新的承诺
return new Promise(function(resolve,reject) { doSomething(function cb(good) { if (good) resolve(); else reject(); }); });