Skip to content

Instantly share code, notes, and snippets.

@harlantwood
Last active December 19, 2015 18:18
Show Gist options
  • Save harlantwood/5997262 to your computer and use it in GitHub Desktop.
Save harlantwood/5997262 to your computer and use it in GitHub Desktop.
# Usage:
# npm install coffee-script
# coffee promises_example_jquery.coffee
#
_ = require 'underscore'
$ = require 'jquery'
natural = require 'natural'
log = require './log.coffee'
wordnet = new natural.WordNet()
term_synonyms = {}
synonym_attempts = 0
node_deferred = $.Deferred()
node_deferred.done((data) ->
log term_synonyms
)
terms = ["love", "peace", "programming"]
_.each terms, (term) ->
term_deferred = $.Deferred()
term_deferred.done((data) ->
$.extend term_synonyms, data
node_deferred.resolve() if ++synonym_attempts == terms.length
)
term_deferred.fail((data...) ->
log "Error: ", data...
node_deferred.resolve() if ++synonym_attempts == terms.length
)
wordnet.lookupSynonyms term, (results) ->
synonyms = _.flatten (result.synonyms for result in results)
data = {}
data[term] = synonyms[...3]
term_deferred.resolve data
_ = require 'underscore'
$ = require 'jquery'
Q = require 'q'
natural = require 'natural'
log = require './log.coffee'
wordnet = new natural.WordNet()
terms = ["love", "peace", "programming"]
terms_promises = _.map terms, (term) ->
deferred = Q.defer()
wordnet.lookupSynonyms term, (results) ->
synonyms = _.flatten (result.synonyms for result in results)
data = {}
data[term] = synonyms[...3]
deferred.resolve data
deferred.promise
Q.allSettled(terms_promises)
.then (results) ->
syns = $.extend {}, (_.map results, (result) -> result.value)...
log syns
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment