2015-03-01 6 views
-1

Я пытаюсь создать бот-кластер, и у меня возникают некоторые проблемы.Ожидание вызова асинхронного вызова для продолжения в узле

Я бы назвал следующую функцию, называемую BuildABot.

http://pastebin.com/zwP7rZay

Теперь после того, как этот вызов закончен, я хотел бы назвать requestItems, который принимает на steamOffers объект в качестве параметра.

http://pastebin.com/jsJ4fhwG

Однако объект имеет нулевое значение, так как вызов не завершен.

Есть ли способ остановить вызов, пока buildABot не будет выполнен?

ответ

1

Существуют различные способы удовлетворения ваших требований, я укажу 2 варианта, в то время как я уверен, что вы можете найти больше. Вы можете найти еще много примеров по всему Интернету.

Вариант 1: Использование функции обратного вызова -

Передайте функцию обратного вызова функции асинхронной, когда асинхронная функция завершена она будет вызывать обратный вызов FUNC. Таким образом, код в функции обратного вызова будет выполняться только при завершении асинхронного вызова.

Похожие темы - how-to-write-asynchronous-functions-for-node-js

Вариант 2: Если у вас есть более сложную логику, и вы хотите, чтобы выполнить одну часть за другой вы можете использовать водопад асинхронной. Пример кода:

async.waterfall([ 
    function(callback){ 
     callback(null, 'one', 'two'); 
    }, 
    function(arg1, arg2, callback){ 
     // arg1 now equals 'one' and arg2 now equals 'two' 
     callback(null, 'three'); 
    }, 
    function(arg1, callback){ 
     // arg1 now equals 'three' 
     callback(null, 'done'); 
    } 
], function (err, result) { 
    // result now equals 'done'  
}); 

См async module site для получения дополнительной информации.

Смежные вопросы