我想让一个异步进程等待另一个异步进程向它发送信号。 (一次就够了)
在 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/