到目前为止,我的代码是:
Promise.map startEndTimes, (startEndTime) ->
Promise.delay 10000
.then ->
oandaClient.getCandlesAsync "#{dbInstrument.base}_#{dbInstrument.quote}", startEndTime.startTime, startEndTime.endTime, 'S5'
.then (candles) ->
console.log candles
这不是真的工作。我有
startEndTimes
作为数组。我想为每个人从Oanda获取数据,然后处理这些数据。我不想立即开始所有通话,而是让它们按顺序进行。这可能吗?如果是这样,我该怎么办? 最佳答案
如果要按顺序运行promise,可以使用Promise.reduce()
:
Promise.reduce startEndTimes, (total, startEndTime) ->
oandaClient getCandlesAsync(
"#{dbInstrument.base}_#{dbInstrument.quote}"
startEndTime.startTime
startEndTime.endTime
'S5'
).then (candles) ->
console.log candles
total.concat candles
, []
.then (allCandles) ->
# use allCandles
如果要在按顺序运行每个呼叫之前延迟一些时间,也可以这样做:
Promise.reduce startEndTimes, (total, startEndTime) ->
Promise.delay 10000
.then () ->
oandaClient getCandlesAsync(
"#{dbInstrument.base}_#{dbInstrument.quote}"
startEndTime.startTime
startEndTime.endTime
'S5'
)
.then (candles) ->
console.log candles
total.concat candles
, []
.then (allCandles) ->
# use allCandles