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, success, error) ->
    if tien < 2000
        error("Khong du tien") 
        return
    console.log "Dang mua gao"
    setTimeout(->
        success({name: "gao", cleaned: false})
    , 1000)

voGao = (gao, success, error) ->
    if !gao? || gao.name != "gao"
        error("Khong co gao") 
        return
    if gao.cleaned
      success(gao)
      return
    console.log "Dang vo gao"
    setTimeout(->
        gao.cleaned = true
        success(gao)
    , 1000)

ruaNoi = (noi, success, error) ->
    if !noi? || noi.name != "noi"
        error "Khong co noi" 
        return
    if noi.cleaned
      success noi
      return
    console.log "Dang rua noi"
    setTimeout(->
        noi.cleaned = true
        success(noi)
    , 1000)

camCom = (noi, gao, success, error) ->
    if !noi? || noi.name != "noi"
        error "Khong co noi" 
        return
    unless noi.cleaned
        error "Chua rua noi" 
        return
    if !gao? || gao.name != "gao"
        error "Khong co gao" 
        return
    unless gao.cleaned
        error "Chua vo gao" 
        return
    console.log "Dang cam com"
    setTimeout(->
        success("com")
    , 1000)

an = (com) ->
    if com != "com"
      console.error "Khong co com"
      return
    console.log "Nom nom"

muaGao tien, (gao) ->
    ruaNoi noi, (noiSach) ->
        voGao gao, (gaoSach) ->
            camCom noiSach, gaoSach, (com) ->
                an com
            , (error) ->
                console.log error
        , (error) ->
            console.log error
    , (error) ->
        console.log error
, (error) ->
    console.log error