纤维/未来实际上做了什么?

时间:2016-04-15 03:57:18

标签: node.js meteor npm node-fibers

下面的代码行是什么?

Npm.require('fibers/future');

我在网上看了一些例子,我遇到了一些这样的事情:

Future = Npm.require('fibers/future');
var accessToken = new Future();

在这种情况下,accessToken变量会是什么?

1 个答案:

答案 0 :(得分:8)

问题有点老但我的2美分:

正如摩尔达在评论中所说,未来的主要目的是让异步事物同步运作。 future实例有3种方法:

  • future.wait()基本上告诉你的线程基本上暂停,直到被告知恢复。
  • future.return(value),告诉等待future他可以恢复的第一种方式,它也非常有用,因为它返回一个值等待然后可以被分配,因此像{{1}这样的行其中ret一旦恢复就成为你的返回值。
  • const ret = future.wait(),非常明确,会使你的阻塞线抛出给定的错误。

在javascript中使事物同步可能听起来有点令人不安但它有时很有用。在future.throw(error)中,当您在Meteor中链接异步调用并且希望将其结果返回给客户端时,它非常有用。您也可以使用现在Meteor.method完全支持的Promises,我已经同时使用了它们并且它有效,它符合您的喜好。

一个简单的例子:

Meteor