我已经使用了多年了,但是我意识到我不了解一些非常基本的东西。在jQuery中,您可以这样打电话:
$.post({url: url, success: callback})
和jQuery将在帖子完成后调用回调方法。
,但您也可以以这样的承诺语法来完成它:
$.post(url).done(callback)
令人困惑的是:post
方法是否有效,无论是否附加了done
回调,那么它如何知道有一个呢?
换句话说,如果您必须这样做,我可以理解:
1 var jqxhr = $.post(url)
2 jqxhr.done(callback)
3 jqxhr.execute()
但不需要第3行。那么,post
如何在没有任何明确的execute
调用的情况下执行,但如果有一个>> ?
done
回调。jQuery返回承诺对象。这立即发生(Ajax是异步,因此收益将立即发生,而Ajax调用的结果通常会延迟至少少量时间)。
当您致电.done()时,您实际上是在从Ajax返回的承诺上调用该诺言。
如果您选择不这样做,那么jQuery根本不在乎,它只是执行AJAX请求,并(最终)解决或拒绝承诺对象。它不知道,也不需要知道,您是否选择听听。
总而言之,"完成" 在现实中不会附加"以后",尽管从表面上讲,代码的书面方式可以给您留下印象。