1

キャッシングに関するこの質問と条件付きの約束に関するこの質問ましたが、正直なところ、約束を使用したことがないので、まだ少し混乱しています。

when.js v2.5.1と jQuery v2.0.3を使用しています。次のコードを promise に変換しようとしています (coffeescript の方がはるかに明確なので、そのまま使用しますが、javascript で自由に応答してください)。

class Loader
  @files: {}
  @load: (path) ->
    @files[path] ?= $.ajax(url: path).responseText

次のように呼び出されます。

mytext = Loader.load "/path/to/greatness"

だから、約束を返したいのはわかっています。jQuery の xhr が遅延可能であり、Promise API を実装していることはわかっています。

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呼び出すことができるからです…?

どんな助けでも大歓迎です。

4

1 に答える 1