iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0
Modern Web

telegram開發筆記系列 第 13

[13] 製作離開功能

  • 分享至 

  • xImage
  •  

先製作離開應用程式的功能

在流程控制 class 的 mainMenu 追加個判斷

然後加個離開程式的函式

controller\flowController.js

  /**
   * @description 主要選單
   *
   * @memberof FlowController
   */
  async mainMenu() {
    let selectOption = await viewPrinter.mainMenu();
    switch (selectOption) {
      case "登入":
        break;
      case "離開":
        this.leaveApp();
        break;
      default:
        break;
    }
  }
  
    /**
   * @description 離開應用程式
   *
   * @memberof FlowController
   */
  async leaveApp() {
    viewPrinter.clearView();
    process.exit();
  }
  

然後製作清空畫面的函式

view\viewPrinter.js

  /**
   * @description 清空畫面
   *
   * @memberof ViewPrinter
   */
  async clearView() {
    process.stdout.write(
      process.platform === "win32" ? "\x1Bc" : "\x1B[2J\x1B[3J\x1B[H"
    );
  }

然後為了增加儀式感

再加一個按下任意鍵後在繼續進行下一個動作的緩衝感

  /**
   * @description 按下去任何按鍵來繼續程式
   *
   * @return {*}
   * @memberof InterfaceClass
   */
  async pressToContinue() {
    return new Promise((resolve) => {
      const handler = () => {
        process.stdin.setRawMode(false);
        process.stdin.pause();
        process.stdout.write("\n");
        resolve();
      };

      process.stdin.resume();
      process.stdin.setRawMode(true);
      process.stdin.once("data", handler);
    });
  }

然後稍微修改一下流程控制的 leaveApp 函式

  async leaveApp() {
    viewPrinter.clearView();
    console.log("按 任意鍵 離開程式");
    await viewPrinter.pressToContinue();
    process.exit();
  }

https://ithelp.ithome.com.tw/upload/images/20210916/20130673oxsYHBmK6U.jpg

離開功能的儀式感 upup

day13


上一篇
[12] 增加 input 輸入功能
下一篇
[14] 開始使用 telegram
系列文
telegram開發筆記18
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言