いつでもカウンターを保持できます。
slack_message = '*Todays menu*'
queries_done = 0
for i in [1..3]
query = "select * from html where url='XPATH.. ["+i+"] XPATH.."
new YQL.exec query, (response) ->
m = response.query.results
slack_message += m
if queries_done is 3
msg.send slack_message
Promisesを使用することもできます:
Promise = require("promise")
call_query = (query) ->
new Promise (resolve) ->
new YQL.exec query, (response) ->
resolve response.query.results;
get_menu = ->
slack_message = '*Todays menu*'
queries = []
for i in [1..3]
queries.push (call_query "select * from html where url='XPATH.. ["+i+"] XPATH..")
Promise.all(queries).then (messages) ->
msg.send slack_message + messages.join()
Promise は、非同期ロジックのコールバックに代わるものであり、 のような気の利いたことを行うことができますPromise.all
。これはまさにあなたが探しているものです。オブジェクトの配列を受け取り、Promise
それらがすべて解決されると、.then
. あなたが夜を過ごすなら、私はそれらについて少し読むことをお勧めします. それらがどのように機能するかを理解すれば、物事をより良くすることができます。