我尝试运行以下代码段,但无济于事。
我找到了代码段here。
var Web3PromiEvent = require('web3-core-promievent');
var myFunc = function(){
var promiEvent = Web3PromiEvent();
setTimeout(function() {
promiEvent.eventEmitter.emit('done', 'Hello!');
promiEvent.resolve('Hello!');
}, 10);
return promiEvent.eventEmitter;
};
// and run it
myFunc()
.then(console.log)
.on('done', console.log);
我总是会遇到这种错误:TypeError:myFunc(...)。then(...)。on不是函数
对我来说至关重要的是,有一种方法可以从我的函数中发出事件,该事件表示在函数执行期间发生了事情。如果可能的话,我宁愿使用async / await语法。
我真的很想避免向函数发送回调参数,但是希望能够处理我认为适合于代码不同部分的事件。
答案 0 :(得分:1)
我认为您误读了文档,可以将.on
方法链接到Web3PromiEvent
对象,但是不能链接到Promise
返回的.then
对象。
因此您可以链.on
或链.then
myFunc()
.then(console.log);
或
myFunc()
.on('done', console.log);
正如您在Promise
返回的.then
下图中看到的那样,Promise
返回的Web3PromiEvent
是否附加了.on方法。
这是doc
中的原始示例// in node.js
var Web3PromiEvent = require('web3-core-promievent');
var myFunc = function(){
var promiEvent = Web3PromiEvent();
setTimeout(function() {
promiEvent.eventEmitter.emit('done', 'Hello!');
promiEvent.resolve('Hello!');
}, 10);
return promiEvent.eventEmitter;
};
// and run it
myFunc()
.then(console.log); //see the semicolon
.on('done', console.log); //see the semicolon