【发布时间】:2013-10-26 05:43:37
【问题描述】:
我查看了this question about caching 和this one about conditional promises,但说实话,我还是有点困惑,因为我以前从未使用过 Promise。
我正在使用when.js v2.5.1 和 jQuery v2.0.3。我正在尝试将以下代码转换为一个承诺(coffeescript 中它更清晰,所以我会坚持下去,但随时用 javascript 回复)
class Loader
@files: {}
@load: (path) ->
@files[path] ?= $.ajax(url: path).responseText
这样称呼:
mytext = Loader.load "/path/to/greatness"
所以,我知道我想回报一个承诺。我知道 jQuery 的 xhr 是可延迟的,并且实现了 Promise API Something,所以我可以做这样的事情吗?
class Loader
@files: {}
@load: (path) ->
if @files[path]
deferred = When.defer()
deferred.resolve @files[path]
deferred.promise
else
$.ajax(url: path).done (data)=>
@files[path] = xhr.responseText
因为无论返回什么都可以调用then...?
非常感谢任何帮助。
【问题讨论】:
标签: javascript jquery promise when-js