gpt4 book ai didi

node.js - fibers/future 究竟做了什么?

转载 作者:搜寻专家 更新时间:2023-10-31 22:19:16 25 4
gpt4 key购买 nike

下面这行代码是做什么的?

Npm.require('fibers/future');

我在网上查找示例,发现了一些这样的示例:

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

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

最佳答案

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

正如 Molda 在评论中所说,Future 的主要目的是让异步事物同步工作。future 实例带有 3 个方法:

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

在 javascript 中使事情同步可能听起来有点令人不安,但它有时很有用。在 Meteor 中,当您在 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;
}
});

关于node.js - fibers/future 究竟做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36637995/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com