我剛剛花了幾個小時閱讀所以回答如Meteor: Calling an asynchronous function inside a Meteor.method and returning the result如何從Meteor自己的回調中調用異步方法?
不幸的是,我仍然沒有設法用戶纖維,或期貨的事情。
我想做一些相當簡單的事情(我想!)。
創建用戶時,根據異步方法的結果向用戶對象添加變量。所以想象一下,如果我的異步方法在名爲BANK的第三方數據庫服務器上調用,可能需要幾秒鐘才能返回。
Accounts.onCreateUser(function(options,user){
var Fiber = Npm.require("fibers");
Fiber(function() {
BANK.getBalance(function(err, theBalance) {
if (err) return console.log(err);
_.extend(user,{
balance: theBalance;
});
});
}).run();
return user;
});
因此,上述情況發生的是BANK方法被調用,但在返回時代碼已經移動並且_.extend從不被調用。
我試着把光纖內的回調稱爲事件,這隻會讓事情變得更糟:它永遠不會返回用戶。它的確如此,但是3秒太晚了,所以下游的一切都在救助。
謝謝你的幫助!
迎接那些沒有解釋就低估了我的問題的人...可能是一個PHP粉絲。 – 2013-04-29 06:41:28
lmao @Stephan Tual – 2016-02-05 12:23:20