【发布时间】:2022-12-18 11:14:57
【问题描述】:
我是 Node.JS 的新手,但对其他语言有一些经验。我正在努力实现以下目标:
- 我想执行一项任务,如果失败则执行另一项任务。
我有两个文件:一个是主要功能,另一个包含类。 首先是主要功能(main.js):
(async function main() {
let { MyClass } = require("./my_class.js");
const mc = new MyClass();
await mc.do_stuff();
console.log(mc.message);
})();
另一个是类(my_class.js)
class MyClass {
constructor() {
this.message='hello';
}
do_stuff=async function() {
return new Promise((resolve,reject) => async function (){
let [res,rej]=await do_first('fail');
if(rej) {
console.log('do_first() failed.');
[res,rej]=await do_second('succeed');
if(rej) {
console.log('do_second() failed.');
reject('failed');
} else {
console.log('do_second() succeeded.');
resolve('success');
}
} else {
console.log('do_first() succeeded, no call to do_second().');
resolve('success');
}
});
}
do_first=async function(param) {
return new Promise((resolve,reject) => {
if(param==='fail') {
console.log('rejecting do_first()');
reject('failure');
} else {
console.log('resolving do_first()');
resole('success');
}
});
}
do_second=async function(param) {
return new Promise((resolve,reject) => {
if(param==='fail') {
console.log('rejecting do_second()');
reject('failure');
} else {
console.log('resolving do_second()');
resole('success');
}
});
}
}
exports.MyClass = MyClass
如果我尝试使用 node ./main.js 运行它,什么也不会发生。如果我在没有 await 的情况下运行 mc.do_stuff(),我确实得到了你好......我错过了哪些船?
就此而言:我正在运行 NodeJS v18.12.0
【问题讨论】:
标签: node.js async-await