Javascript 在节点中的承诺内调用类的其他函数
所以,我在一个类中有两个方法。两人都做出了承诺。第二个函数从它返回的承诺内部调用第一个函数Javascript 在节点中的承诺内调用类的其他函数,javascript,node.js,promise,this,es6-promise,Javascript,Node.js,Promise,This,Es6 Promise,所以,我在一个类中有两个方法。两人都做出了承诺。第二个函数从它返回的承诺内部调用第一个函数 module.exports = { funcA: () => { return new Promise((resolve, reject) => { something ? resolve(something): reject('nope'); }); } funcB: () => { return new Promise(async(resolv
module.exports = {
funcA: () => {
return new Promise((resolve, reject) => {
something ? resolve(something): reject('nope');
});
}
funcB: () => {
return new Promise(async(resolve, reject) => {
try {
const something = await this.funcA();
} catch(err) {
reject('error');
}
}
}
当我试图从另一个类调用funcB()时,如下所示:
let something = await someService.funcB();
我得到:
TypeError: this.funcA() is not a function
你能解释一下为什么会发生这种情况以及如何解决这个问题吗?我认为这就是你需要做的
module.exports = {
funcA: function() {
return new Promise((resolve, reject) => {
something ? resolve(something): reject('nope');
});
}
funcB: function() {
return new Promise(async(resolve, reject) => {
try {
const something = await this.funcA();
} catch(err) {
reject('error');
}
}
}
我发现在对象内部使用箭头函数会破坏
这一点,但可以通过这种方式进行修复。一种方法是在模块外部创建函数。导出块以获取每个函数的引用。然后可以省略这个
关键字
const funcA = () => {
return new Promise((resolve, reject) => {
// code here
});
};
const funcB = () => {
return new Promise(async(resolve, reject) => {
try {
const something = await funcA();
resolve(something);
} catch(err) {
reject('error');
}
})
};
module.exports = {
funcA,
funcB
}
只要停止使用newpromise
,你所有的问题就会神奇地消失;)