我正在寻找一种创建延迟对象的方法,该对象将在当前范围之外解决.我喜欢延迟对象,正如我在Chrome 38中看到Promise.defer()返回延迟对象.
但在最新的Firefox 34中,Promise.defer在Safari 8.0中也是未定义的.
所以我现在无法使用Promise.defer.未来状况如何?它会在其他浏览器中实现还是会被淘汰?
解决方法
根据
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(); }); });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。