JSFiddle - React, Tailwind, and code Playground
by Duc Nghiem Xuan
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/q.js/1.4.1/q.js"></script>
CoffeeScript
tien = 3000
noi =
name: "noi"
cleaned: false
muaGao = (tien) ->
deferred = Q.defer()
if tien < 2000
deferred.reject new Error("Khong du tien")
return deferred.promise
console.log "Dang mua gao"
setTimeout(->
deferred.resolve({name: "gao", cleaned: false})
, 1000)
return deferred.promise
voGao = (gao) ->
deferred = Q.defer()
if !gao? || gao.name != "gao"
deferred.reject new Error("Khong co gao")
return deferred.promise
if gao.cleaned
deferred.resolve(gao)
return deferred.promise
console.log "Dang vo gao"
setTimeout(->
gao.cleaned = true
deferred.resolve(gao)
, 1000)
return deferred.promise
ruaNoi = (noi) ->
deferred = Q.defer()
if !noi? || noi.name != "noi"
deferred.reject new Error "Khong co noi"
return deferred.promise
if noi.cleaned
deferred.resolve noi
return deferred.promise
console.log "Dang rua noi"
setTimeout(->
noi.cleaned = true
deferred.resolve(noi)
, 1000)
return deferred.promise
camCom = (noi, gao) ->
deferred = Q.defer()
if !noi? || noi.name != "noi"
deferred.reject new Error "Khong co noi"
return deferred.promise
unless noi.cleaned
deferred.reject new Error "Chua rua noi"
return deferred.promise
if !gao? || gao.name != "gao"
deferred.reject new Error "Khong co gao"
return deferred.promise
unless gao.cleaned
error "Chua vo gao"
return deferred.promise
console.log "Dang cam com"
setTimeout(->
deferred.resolve("com")
, 1000)
return deferred.promise
an = (com) ->
if com != "com"
console.error "Khong co com"
return
console.log "Nom nom"
pGao = muaGao(tien)
pNoiSach = ruaNoi(noi)
pGaoSach = pGao.then (x) ->
voGao(x)
pCom = pNoiSach.then (ns) ->
pGaoSach.then (gs) ->
camCom(ns, gs)
pCom.done...