在 promise 回调中使用参数时,无法将参数传递给 class 方法
Can't pass arguments to class methods, when using them in a promise callback
我有一个 class:
'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;
当我创建 class 的对象并调用 do()
方法时:
let anObject = new aClass();
anObject.do();
"undefined" 在控制台中记录了两次。这意味着在 b()
方法中参数没有传递给承诺解析:resolve('b');
同时,如果我不使用 class 方法,而是直接在回调中添加代码:
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
作为转译器。
为什么我使用 class 方法时没有传递参数?是否有任何范围限制,或者它是一个编译器问题?
在:
.then((a) => {
this.b(a);
})
你没有 return
任何东西,所以 undefined
被返回 - 这进入
.then((b) => {
console.log(b);
this.c(b);
})
既记录它又将它传递到 c
,后者也记录它。
尝试将您的代码更改为:
.then((a) => {
return this.b(a);
})
我有一个 class:
'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;
当我创建 class 的对象并调用 do()
方法时:
let anObject = new aClass();
anObject.do();
"undefined" 在控制台中记录了两次。这意味着在 b()
方法中参数没有传递给承诺解析:resolve('b');
同时,如果我不使用 class 方法,而是直接在回调中添加代码:
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
作为转译器。
为什么我使用 class 方法时没有传递参数?是否有任何范围限制,或者它是一个编译器问题?
在:
.then((a) => {
this.b(a);
})
你没有 return
任何东西,所以 undefined
被返回 - 这进入
.then((b) => {
console.log(b);
this.c(b);
})
既记录它又将它传递到 c
,后者也记录它。
尝试将您的代码更改为:
.then((a) => {
return this.b(a);
})