简体   繁体   中英

Node.js - Promise

I'm struglling with Node.js Promises...

The code method must returns a Promise which resolves with a String. The resolved String depends on the value of the name and language properties of the Developer instance:

Output Example: language: nodejs. Then console.log("Hello, Nicole!") language: java. Then System.out.println("Hello, Nicole!") language: python. Then print("Hello, Nicole!")

For any other language, the returned Promise should reject with an Error instance with a respective message: 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.

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);
  });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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