gpt4 book ai didi

javascript - 如何在 node.js 中编写一个事件发射器,让你创建一个函数 "myFunction",然后在它运行时调用成功或失败?

转载 作者:数据小太阳 更新时间:2023-10-29 05:50:06 26 4
gpt4 key购买 nike

比如我见过这样的函数,用起来很顺手:

myFunction(data).
success(function() { // success! }).
fail(function() { // fail! });

我看不到一个明显的方法来实现它。这是我在查看 Node.js 文档后的悲哀尝试:

var EventEmitter = require('events').EventEmitter;
var testEmitter = function(x) {
var e = new EventEmitter();

if (x) {
e.emit('success', 'got: ' + x);
} else {
e.emit('failure', 'no x passed')
}

return e;
}

显然,当您尝试调用它时,这将不起作用:

testEmitter('hello').
success(console.log('success!')).
failure(console.log('failure!'));

// TypeError: Object #<EventEmitter> has no method 'success'

实现此模式的最佳方式是什么?

最佳答案

这可以“改进”为:

var EventEmitter = require('events').EventEmitter;

var testEmitter = function(x) {
var e = new EventEmitter();

process.nextTick(function(){
if (x) {
e.emit('success', 'got: ' + x);
} else {
e.emit('failure', 'no x passed')
}
})

var self = {};
self.success = function(f) {
e.on('success',f);
return self;
};
self.failure = function(f) {
e.on('failure',f);
return self;
};
return self;
};

testEmitter("hello").success(function(results){
console.log('success!',results);
}).failure(function(error){
console.log('failure!' + error);
})

关于javascript - 如何在 node.js 中编写一个事件发射器,让你创建一个函数 "myFunction",然后在它运行时调用成功或失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19796917/

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