嵌套的异步函数 - Futures 中的 Future return 运行
Nested Async Functions - Future return running inside Fibers
我需要 运行 两个嵌套的异步函数和 return 从第二个到客户端的回调。 future.return 在 Fibers 中不起作用。如何在不使用集合的情况下 return 将结果发送给客户端?
Meteor.methods({
'youtube':function(object) {
var youTube = new YouTube();
youTube.search(object.song, 1, function(error, result) {
if (error) {
console.log(error);
}
else {
Fiber(function() {
var future = new Future();
ytdl.getInfo(result.url, function(err, result) {
future.return({data: result});
});
return future.wait();
}).run();
}
});
});
未来应该在第一个方法范围内返回。并阅读 Meteor.bindEnvironment
var Future = Npm.require('fibers/future');
var bound = Meteor.bindEnvironment(function(callback){ return callback(); });
Meteor.methods({
'youtube':function(object) {
var fut = new Future();
var youTube = new YouTube();
youTube.search(object.song, 1, function (error, result) {
bound(function () {
if (error) {
console.log(error);
} else {
ytdl.getInfo(result.url, function(err, result) {
fut.return({data: result});
});
}
});
});
return fut.wait();
}
});
我需要 运行 两个嵌套的异步函数和 return 从第二个到客户端的回调。 future.return 在 Fibers 中不起作用。如何在不使用集合的情况下 return 将结果发送给客户端?
Meteor.methods({
'youtube':function(object) {
var youTube = new YouTube();
youTube.search(object.song, 1, function(error, result) {
if (error) {
console.log(error);
}
else {
Fiber(function() {
var future = new Future();
ytdl.getInfo(result.url, function(err, result) {
future.return({data: result});
});
return future.wait();
}).run();
}
});
});
未来应该在第一个方法范围内返回。并阅读 Meteor.bindEnvironment
var Future = Npm.require('fibers/future');
var bound = Meteor.bindEnvironment(function(callback){ return callback(); });
Meteor.methods({
'youtube':function(object) {
var fut = new Future();
var youTube = new YouTube();
youTube.search(object.song, 1, function (error, result) {
bound(function () {
if (error) {
console.log(error);
} else {
ytdl.getInfo(result.url, function(err, result) {
fut.return({data: result});
});
}
});
});
return fut.wait();
}
});