[英]Node.js - Promise
I'm struglling with Node.js Promises...我正在为 Node.js 承诺而苦苦挣扎......
The code method must returns a Promise which resolves with a String.代码方法必须返回一个 Promise ,它用字符串解析。 The resolved String depends on the value of the name and language properties of the Developer instance:
解析的字符串取决于 Developer 实例的名称和语言属性的值:
Output Example: language: nodejs. Output 示例:语言:nodejs。 Then
console.log("Hello, Nicole!")
language: java.然后
console.log("Hello, Nicole!")
语言:java。 Then System.out.println("Hello, Nicole!")
language: python.然后
System.out.println("Hello, Nicole!")
语言:python。 Then print("Hello, Nicole!")
然后
print("Hello, Nicole!")
For any other language, the returned Promise should reject with an Error instance with a respective message: Unsupported language .对于任何其他语言,返回的 Promise 应该拒绝并带有相应消息的错误实例: Unsupported language 。
Please, could anyone check if this code method correct?请问,有人可以检查此代码方法是否正确吗? I assume it isn't, please, what's wrong and why?
我认为不是,请问有什么问题,为什么?
class developer {
constructor(name, language) {
this.name = name
this.role = language
}
getName() {
return this.name
}
setName(name) {
this.name = name
}
getLanguage() {
return this.language
}
setLanguage(language) {
this.language = language
}
code() {
this.getName();
this.getLanguage();
return new Promise((resolve, reject) => {
if (this.language === 'nodejs') {
console.log(' console.log("Hello, ' + this.name + '!")');
} else if (this.language === 'java') {
console.log('System.out.println("Hello, ' + this.name + '!")');
} else if (this.language === 'python') {
console.log('print("Hello, ' + this.name + '!")');
} else {
console.log('Unsupported language: ' + this.language);
}
});
}
}
let mydeveloper = new developer();
mydeveloper.code();
If you return a Promise, you have to define when it is resolved and when it's rejected.如果您返回 Promise,您必须定义它何时被解决以及何时被拒绝。
class developer {
constructor(name, language) {
this.name = name
this.role = language
}
getName() {
return this.name
}
setName(name) {
this.name = name
}
getLanguage() {
return this.language
}
setLanguage(language) {
this.language = language
}
code() {
this.getName();
this.getLanguage();
return new Promise((resolve, reject) => {
if (this.language === 'nodejs') {
resolve('console.log("Hello, ' + this.name + '!")');
} else if (this.language === 'java') {
resolve('System.out.println("Hello, ' + this.name + '!")');
} else if (this.language === 'python') {
resolve('print("Hello, ' + this.name + '!")');
} else {
reject('Unsupported language: ' + this.language);
}
});
}
}
let mydeveloper = new developer('John Doe', 'English');
// Will print out -> Unsupported language: undefined
mydeveloper
.code()
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
});
// Set language to nodejs
mydeveloper.setLanguage('nodejs');
// Will print out -> console.log("Hello, John Doe!")
mydeveloper
.code()
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
});
// Set language to java
mydeveloper.setLanguage('java');
// Will print out -> System.out.println("Hello, John Doe!")
mydeveloper
.code()
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
});
// Set language to python
mydeveloper.setLanguage('python');
// Will print out -> print("Hello, John Doe!")
mydeveloper
.code()
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.