下面的代码行是做什么的?
Npm.require('fibers/future');
我在网上看了一些例子,我遇到了一些这样的事情:
Future = Npm.require('fibers/future'); var accessToken = new Future();
在这种情况下,accessToken变量是什么?
解决方法
问题有点老但我的2美分:
正如Molda在评论中所说,Future的主要目的是让异步事物同步工作.
未来的实例有3种方法:
> future.wait()基本上告诉你的线程基本上暂停,直到被告知恢复.
> future.return(value),告诉等待将来他可以恢复的第一种方式,它也非常有用,因为它返回一个值wait然后可以被赋值,因此像const ret = future.wait()这样的行,其中ret成为你的返回价值一旦恢复.
> future.throw(错误),非常明确,使你的阻塞线抛出给定的错误.
在javascript中使事物同步可能听起来有点令人不安但它有时很有用.在Meteor中,当您在Meteor.method中链接异步调用并且希望将其结果返回给客户端时,它非常有用.你也可以使用现在Meteor完全支持的Promises,我已经使用了它们并且它可以工作,这取决于你的喜好.
一个简单的例子:
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; } });