簡體   English   中英

Node.js - Promise

[英]Node.js - Promise

我正在為 Node.js 承諾而苦苦掙扎......

代碼方法必須返回一個 Promise ,它用字符串解析。 解析的字符串取決於 Developer 實例的名稱和語言屬性的值:

Output 示例:語言:nodejs。 然后console.log("Hello, Nicole!")語言:java。 然后System.out.println("Hello, Nicole!")語言:python。 然后print("Hello, Nicole!")

對於任何其他語言,返回的 Promise 應該拒絕並帶有相應消息的錯誤實例: Unsupported language

請問,有人可以檢查此代碼方法是否正確嗎? 我認為不是,請問有什么問題,為什么?


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

如果您返回 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