gpt4 book ai didi

javascript - 在 promise 回调中使用参数时,无法将参数传递给类方法

转载 作者:行者123 更新时间:2023-11-30 16:29:14 25 4
gpt4 key购买 nike

我有一个类:

'use strict';
class aClass {
a() {
return new Promise((resolve, reject) => {
if (1 != 1) {
reject(new Error('error'));
} else {
resolve('a');
}
});
}
b(b) {
return new Promise((resolve, reject) => {
if (1 != 1) {
reject(new Error('error'));
} else {
resolve('b');
}
});
}
c(c) {
console.log(c);
}


do() {
this.a()
.then((a) => {
this.b(a);
})
.then((b) => {
console.log(b);
this.c(b);
}).catch((error) => {
console.log('err', error);
});
}
}

module.exports = aClass;

当我创建类的对象并调用 do() 方法时:

let anObject = new aClass();
anObject.do();

“undefined” 在控制台中记录了两次。这意味着在 b() 方法中参数没有传递给 promise 解析:resolve('b');

同时,如果我不使用类方法,而是直接在回调中添加代码:

do()  {
this.a()
.then((a) => {
return new Promise((resolve, reject) => {
if (1 != 1) {
reject(new Error('error'));
} else {
resolve('b');
}
});
})
.then((b) => {
console.log(b);
this.c(b);
}).catch((error) => {
console.log('err', error);
});
}

一切正常,“b” 在控制台中记录了两次。

我在这个例子中使用 nodejs 并使用 babeljs 作为转译器。为什么我使用类方法时不传递参数?是否有任何范围限制,或者它是一个编译器问题?

最佳答案

在:

.then((a) => {
this.b(a);
})

你没有返回任何东西,所以 undefined 被返回 - 这进入了

.then((b) => {
console.log(b);
this.c(b);
})

既记录它又将它传递给 c,后者也记录它。

尝试将您的代码更改为:

.then((a) => {
return this.b(a);
})

关于javascript - 在 promise 回调中使用参数时,无法将参数传递给类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33592032/

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