下面的代码行是做什么的?
Npm.require('fibers/future');
我在网上找了一些例子,我遇到了一些这样的例子:
Future = Npm.require('fibers/future');
var accessToken = new Future();
在这种情况下会有什么accessToken
变量?
下面的代码行是做什么的?
Npm.require('fibers/future');
我在网上找了一些例子,我遇到了一些这样的例子:
Future = Npm.require('fibers/future');
var accessToken = new Future();
在这种情况下会有什么accessToken
变量?
问题有点老了,但我的 2 美分:
正如 Molda 在评论中所说,Future 的主要目的是让异步事物同步工作。
future
实例带有 3 种方法:
future.wait()
基本上告诉你的线程基本上暂停,直到被告知恢复。future.return(value)
,第一种告诉等待future
他可以恢复的方法,它也非常有用,因为它返回一个值 wait 然后可以分配,因此像const ret = future.wait()
where ret 这样的行一旦恢复就会成为您的返回值。future.throw(error)
,也非常明确,使您的阻塞行抛出给定错误。在 javascript 中使事情同步可能听起来有点令人不安,但它有时很有用。在Meteor
中,当您在 a 中链接异步调用Meteor.method
并且希望将其结果返回给客户端时,它非常有用。你也可以使用Promises
现在也完全支持的Meteor
,我都使用过,它可以工作,这取决于你的喜好。
一个简单的例子:
Meteor.methods({
foo: function() {
const future = new Future();
someAsyncCall(foo, function bar(error, result) {
if (error) future.throw(error);
future.return(result);
});
// Execution is paused until callback arrives
const ret = future.wait(); // Wait on future not Future
return ret;
}
});