use*_*180 8 node.js npm meteor node-fibers
下面的代码行是做什么的?
Npm.require('fibers/future');
Run Code Online (Sandbox Code Playgroud)
我在网上看了一些例子,我遇到了一些这样的事情:
Future = Npm.require('fibers/future');
var accessToken = new Future();
Run Code Online (Sandbox Code Playgroud)
accessToken
在这种情况下,变量会是什么?
ko0*_*tik 10
问题有点老但我的2美分:
正如Molda在评论中所说,Future的主要目的是让异步事物同步工作.
future
实例有3种方法:
future.wait()
基本上告诉你的线程基本上暂停,直到告诉恢复.future.return(value)
告诉等待future
他可以恢复的第一种方式,它也非常有用,因为它返回一个值等待然后可以被赋值,因此像const ret = future.wait()
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;
}
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2989 次 |
最近记录: |