简体   繁体   English

Node.js - Promise

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM