node.js - Node Js : implementing a one-time "channel" using promises

标签 node.js

我想让一个异步进程等待另一个异步进程向它发送信号。 (一次就够了)

Go ,您可以在两个进程之间创建 channel 。

def foo1(c chan int) {
   // do some stuff
   c <- 1
}

def foo2(c chan int) {
   <-c
   // do stuff later
}

基本上<-c意思是“等到有人把东西放入c”。 c <- 1意思是“将 1 放入 c ”。 (假设相同的对象 c 被传递给两个函数)。

我想用 Node 实现类似的东西。我的想法是创建一个 promise ,并让一个进程解决它,另一个进程解决 await 。像这样的东西:

function foo1(promise) {
   // do some stuff
   promise.resolve();
}

function foo2(promise) {
   await promise;
   // do stuff later
}

我怎样才能做这样的事情?

最佳答案

您可以使用“https://www.npmjs.com/package/smem ”在异步进程之间发送数据。

// Import.
const SMem = require('smem');

// Create shared memory instance.
const defaultSMem = new SMem();
 
// Get value async.
(async () => {
  console.log(await defaultSMem.get('test-key'));
})();
 
// Set value after 2 seconds.
setTimeout(() => {
  defaultSMem.set('test-key', 'test-value');
}, 2000);

关于node.js - Node Js : implementing a one-time "channel" using promises,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56115072/

相关文章:

mysql - SailsJS - 如何在创建记录时指定字符串属性长度而不会出错?

javascript - MongoDB/ Mongoose : create two types of models for user accounts

node.js - elastic beanstalk t2 服务器在哪里存储我的 node.js 应用程序文件?

node.js - 使用 Sinon stub 测试 Express 路线

java - 使用 this 在 Node.js 中构建类

javascript - 无法从nodejs请求结果读取结果

node.js - 使用 nodeJS/forever 忽略配置文件

javascript - eval() 处理对象时出现语法错误

javascript - 如何对 TypeScript 类执行 Joi 验证?

javascript - Mongodb find() 返回未定义