在我的Meteor客戶端代碼中,我試圖使用只有異步調用的第三方API。如何在客戶端上使用Meteor.wrapAsync以同步方式調用此API?該文檔似乎表明這是可能的:http://docs.meteor.com/#/full/meteor_wrapasync如何在客戶端上使用Meteor.wrapAsync?
下面是一些示例代碼,我想在一個同步的風格調用:
var func1 = function(callback) {
Meteor.setTimeout(function() {
console.log('func1 executing');
callback(null, {success: true});
}, 2000);
};
var func2 = function(callback) {
Meteor.setTimeout(function() {
console.log('func2 executing');
callback(null, {success: true});
}, 1000);
};
var wrapped1 = Meteor.wrapAsync(func1);
var wrapped2 = Meteor.wrapAsync(func2);
Template.test.rendered = function() {
wrapped1();
console.log('After wrapped1()');
wrapped2();
console.log('After wrapped2()');
};
目前,這產生這樣的輸出:
After wrapped1()
After wrapped2()
func2 executing
func1 executing
我想製作:
func1 executing
After wrapped1()
func2 executing
After wrapped2()
我把這個鱈魚e進入MeteorPad:http://meteorpad.com/pad/fLn9DXHf7XAACd9gq/Leaderboard
這是不可能的,瀏覽器環境是由設計異步,請參閱這個答案更多關於爲什麼'Meteor.wrapAsync'定義在客戶端,但解決回調行爲:http://stackoverflow.com/questions/26058205/meteor-wrapasync-syntax/26058613#26058613 – saimeunt