【发布时间】:2018-02-22 12:15:12
【问题描述】:
如果没有 jQuery,我将如何编写以下内容?
var dfd = $.Deferred()
dfd.done(done)
dfd.resolve()
function done() {
console.log('done')
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
【问题讨论】:
-
不能直接使用 ES6 Promise 吗?另外,您的延迟(又名承诺)无需任何异步工作即可直接解决,但我猜您的实际用例不同?
-
是的,我可以。是的,我的现实生活用例需要等到其他事情发生。
-
Deferreds 现在几乎被认为是一种反模式,ES6 不直接支持它们是有原因的。你真正想解决什么问题?任何关于 ES6 标准 Promise 的基础教程都将向您展示如何使用 Promise 执行器创建和解决标准 Promise。您是否特别询问如何在 ES6 中创建延迟对象(现在不受欢迎的东西)?或者这里要解决的真正问题是什么?有了尽可能多的代表,你应该能够写出一个更完整、更有意义的问题。
-
有关将延迟(而不是承诺)作为反模式的讨论,请参见此处:When would someone need to create a deferred?。
-
并且,有关使用标准承诺创建延迟的示例,请参阅here。
标签: javascript promise