1
我看了this question about caching和this one about conditional promises但说实话,我还是有点困惑,因为我以前从未使用承诺。如何通过ajax将此懒惰转换为承诺?
我使用的是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
呼吁吗......?
任何帮助,非常感谢。
谢谢,我正在推翻它。 – iain