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

前端之家收集整理的这篇文章主要介绍了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;
  }
});

猜你在找的Node.js相关文章