我正在尝试建立一个机器人集群,我在这里遇到了一些麻烦。
我想调用以下函数,名为BuildABot。
此调用完成后,我想调用requestItems,它将steamOffers对象作为参数接收。
但是,该对象为null,因为调用尚未完成。
有没有办法在buildABot完成之前暂停通话?
答案 0 :(得分:1)
有多种方法可以满足您的要求,我会提到2个选项,但我相信您可以找到更多。您可以在网络上找到更多示例。
选项1:使用回调函数 -
将回调函数传递给异步函数,当异步函数完成时,它将调用回调函数。这样,回调函数中的代码只有在异步调用结束时才会执行。
相关主题 - 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。