node.js – 光纤/未来究竟做了什么?

下面的代码行是做什么的?
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;
  }
});

相关文章

现在的js代码都是这种高级点的方式语法 , 就是ts语法 ,要使用ts语法那就要先安装一下 先安装nodejs最...
nvm是node版本管理工具 为了解决node各种版本存在不兼容现象 nvm是让你在同一台机器上安装和切换不同版...
1、安装nodejs 2、在项目文件夹目录下创建一个js文件,命名server.js(自定义名称),内容如下 3、打开命令...
1.连接路径:path.join([path1][, path2][, ...]) path.join()方法可以连接任意多个路径字符串。要连接...
简介 1.aes加密简单来说,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个...
定义 Object.keys 定义:返回一个对象可枚举属性的字符串数组; Object.getOwnPropertyNames 定义:返回...