나는 this question about caching과 this one about conditional promises을 보았지만 솔직히 말해서 나는 결코 전에 약속을 사용하지 않았기 때문에 약간 혼란 스럽다.Ajax를 통해이 지연 할당을 약속으로 변환하려면 어떻게해야합니까?
나는 when.js v2.5.1과 jQuery v2.0.3을 사용하고 있습니다.
: 나는class Loader
@files: {}
@load: (path) ->
@files[path] ?= $.ajax(url: path).responseText
는 다음과 같이 호출 할 (내가 그 고수하지만, 자바 스크립트로 응답 해 주시기 것이다 그래서 너무 명확 커피 스크립트에서의) 약속에 다음 코드를 변환하려고 해요
mytext = Loader.load "/path/to/greatness"
그래서 저는 약속을 되돌리고 싶습니다. jQuery의 xhr은 연기가 가능하고 Promise API SoleWimplements를 사용하므로이 기능을 사용할 수 있습니까?
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
이 호출 될 수 있기 때문에 ... ...?
도움을 주시면 감사하겠습니다.
감사합니다, I 그것을 overthinking했다. – iain