README

Example Guide

贡献指南

▼ 项目列表

▼ Intermediate-Level Ideas

Book Finder App

To-Do 应用

命令行计算器

Markdown预览器

Emoji翻译器应用

Password Generator

Name Generator

Meme生成器应用

FlashCards应用

Charity Finder App

Podcast目录应用

Game Suggestion App

Simple Online Store

Flip Art App

HighStriker游戏

Sports Bracket Generator

时区提醒机器人

二维码徽章应用

卡片记忆游戏

Bit Masks App

Chrome主题扩展

Currency Converter

Drawing App

GitHub个人资料

Image Scanner

Markdown表格生成器

RegExp助手应用

Sales数据库应用程序

String Art

This or That Game

Typing Practice App

Voting App

Math Editor

▼ 初学者项目合集

Bin2Dec应用

Border Radius Previewer

CSV转JSON应用

Calculator App

Calendar App

因果应用

Christmas Lights App

Color Cycle App

倒计时器应用

Dollars To Cents App

Dynamic CSS Variables App

First Database App

Flip Image App

GitHub状态应用

Hello App

IOT邮箱应用

JSON转CSV应用

Javascript正则表达式验证

Key-Value 应用

Lorem Ipsum 生成器

Notes应用

Pearson回归应用

Pomodoro时钟

产品登陆页

Quiz应用程序

随机餐点生成器

随机数生成器

Recipe App

Roman to Decimal Converter

滑块设计

Stopwatch App

True or False App

Vigenere 密码

Weather App

Windchill App

Word Frequency App

▼ Advanced Ideas

Battleship Bot

Battleship游戏引擎

Boole Bot 游戏

Bug Race Game

Calorie Counter App

Chat应用

Contribution Tracker App

Elevator App

FastFood应用

GitHub时间线应用

GitTweet应用

Instagram克隆应用

Kudos Slackbot

Movie App

MyPodcast Library App

NASA系外行星查询

Shell Game

Shuffle-Deck-App

Slack 归档器

SpellIt-App

Survey App

物联网邮箱模拟器

等级: 初级

物联网邮箱模拟器的目标是模仿一个物联网(IoT)启用的物理邮箱如何通知你“蜗牛”邮件已到达。通过这样做,它将为你提供使用回调在应用程序的不同组件之间通信状态的经验,这些组件相互依赖。

要求与约束

  • 尽管这个应用程序是使用Javascript概念和术语指定的,但你可以选择使用你自己的语言来实现它。

  • 提供以下Javascript类来启动和停止监控过程,并以预设的间隔向应用程序网页发送邮箱门的状态信号(打开或关闭)。请记住,你指定的间隔不应该超过打开或关闭门所需的时间,否则你可能会错过一个递送!

/**
 * 监控物联网启用蜗牛邮箱内的光线水平,以检测邮箱门何时被打开和关闭。
 * @class IOTMailbox
 */
class IOTMailbox {
  /**
   * 创建一个IOTMailbox实例。
   * @param {number} [signalInterval=500] 检查邮箱状态的计时器间隔。
   * @param {function} signalCallback 函数,当计时器间隔到期时将被调用。
   * @memberof IOTMailbox
   */
  constructor(signalInterval = 500, signalCallback) {
    this.signalInterval = signalInterval;
    this.signalCallback = signalCallback;
    this.intervalID = null;
    this.lastLightLevel = 0;
  }

  /**
   * 开始监控邮箱并调用调用者指定的回调函数,该函数在间隔到期时被调用。
   * @memberof IOTMailbox
   */
  startMonitoring = () => {
    console.log(`开始监控邮箱...`);
    this.intervalID = window.setInterval(this.signalStateChange, this.signalInterval);
  }

  /**
   * 停止监控邮箱状态
   * @memberof IOTMailbox
   */
  stopMonitoring = () => {
    if (this.intervalID === null) return;
    window.clearInterval(this.intervalID);
    this.intervalID = null;
    console.log(`邮箱监控已停止...`);
  }

  /**
   * 将邮箱内的当前光线水平传递给用户的回调函数。正的光线水平表示门是打开的,而负水平表示它是关闭的。根据采样间隔,邮箱门可能处于从完全关闭到完全打开的任何位置。这意味着光线水平在间隔到间隔之间变化。
   * @memberof IOTMailbox
   */
  signalStateChange = () => {
    const lightLevel = this.lastLightLevel >= 0 
      ? Math.random().toFixed(2) * -1 
      : Math.random().toFixed(2);
    console.log(`邮箱状态已更改 - 光线水平: ${lightLevel}`);
    this.signalCallback(this.lightLevel);
    this.lastLightLevel = lightLevel;
  }
};

用户故事

  • [ ] 用户可以看到一个包含三个按钮的控制面板,分别是“开始监控”、“停止监控”和“重置”。
  • [ ] 用户可以看到一个通知面板,其中将发布邮箱状态。
  • [ ] 用户可以看到一个可滚动的日志面板,在这里将发布描述应用程序操作和与IOTMailbox实例交互的执行详细信息。
  • [ ] 用户可以点击“开始监控”按钮开始从邮箱接收状态通知。
  • [ ] 用户可以在日志面板中看到一条消息,当监控开始时添加。
  • [ ] 用户可以在日志面板中看到一条消息,当通过回调函数传递光线水平时添加。这应该包括数字光线水平和门是打开还是关闭。
  • [ ] 用户可以在通知面板中看到一条消息,当门被打开时添加。
  • [ ] 用户可以点击“停止监控”按钮停止从邮箱接收状态通知。
  • [ ] 用户可以在日志面板中看到一条消息,当监控停止时添加。

额外功能

  • [ ] 用户可以看到“开始监控”按钮在监控停止前是禁用的。
  • [ ] 用户可以看到“停止监控”按钮在监控开始前是禁用的。
  • [ ] 用户可以在控制面板中看到一个字段,允许指定监控间隔的长度。
  • [ ] 用户可以在通知面板中看到一条消息,如果门保持打开。
  • [ ] 用户可以在门打开时听到声音警报。

有用的链接和资源

示例项目

不适用