Heim > Web-Frontend > js-Tutorial > Hauptteil

Promise in JS verwenden, um Ampel-Beispielcode zu implementieren (Demo)

韦小宝
Freigeben: 2018-01-11 10:16:27
Original
2510 Leute haben es durchsucht

Dieser Artikel führt Sie in die Verwendung von Promise in JS ein, um Ampeleffekte durch Beispielcode zu erzielen. Außerdem wird ein Beispiel für die Verwendung von Promise in JS vorgestellt.

Anforderungen

  • Versprechen Sie, die Ampelfarbe zu überspringen

  • Die Grünes Licht wird drei Sekunden lang ausgeführt. Nach

  • Nachdem das gelbe Licht vier Sekunden lang ausgeführt wird

  • Das rote Licht wird fünf Sekunden lang ausgeführt

HTML-Implementierung Wie folgt:

<ul id="traffic" class="">
 <li id="green"></li>
 <li id="yellow"></li>
 <li id="red"></li>
</ul>
Nach dem Login kopieren

Definieren Sie eine leere Klasse und bedienen Sie dann den entsprechenden Klassennamen in js, um verwandte Effekte zu erzielen.

CSS wird wie folgt implementiert:

ul {
 position: absolute;
 width: 200px;
 height: 200px;
 top: 50%;
 left: 50%;
 transform: translate(-50%,-50%);
}
 /*画3个圆代表红绿灯*/
 ul >li {
  width: 40px;
  height: 40px;
  border-radius:50%;
  opacity: 0.2;
  display: inline-block;
 }
 /*执行时改变透明度*/
 ul.red >#red, 
 ul.green >#green,
 ul.yellow >#yellow{
  opacity: 1.0;
 }
 /*红绿灯的三个颜色*/
 #red {background: red;}
 #yellow {background: yellow;}
 #green {background: green;}
Nach dem Login kopieren

JavascriptPrinzip:

Die Promise-Funktion ist eine asynchrone Betriebsfunktion . In der Funktion kann am Ende des Laufs die Methode then() verwendet werden. Wir können dies erreichen, indem wir eine verzögerte Ausführung innerhalb der Promise-Funktion festlegen.

js-Code lautet wie folgt:

function timeout(timer){
  return function(){ 
   return new Promise(function(resolve,reject){
   setTimeout(resolve,timer) 
   })  
  }
  }
 var green = timeout(3000);
 var yellow = timeout(4000);
 var red = timeout(5000);
 var traffic = document.getElementById("traffic");
 (function restart(){
  &#39;use strict&#39;      //严格模式
  console.log("绿灯"+new Date().getSeconds()) //绿灯执行三秒 
  traffic.className = &#39;green&#39;;
  green()
  .then(function(){
   console.log("黄灯"+new Date().getSeconds()) //黄灯执行四秒
   traffic.className = &#39;yellow&#39;;
   return yellow();
  })
  .then(function(){
   console.log("红灯"+new Date().getSeconds()) //红灯执行五秒
   traffic.className = &#39;red&#39;;
   return red();
  }).then(function(){
   restart()
  })
  })();
Nach dem Login kopieren

ps: Schauen wir uns ein Beispiel für die Verwendung von Promise an

Hinweis: Wenn Sie möchten, können Methoden in einer Kette ausgeführt werden und müssen ein Promise-Objekt zurückgeben! ! !

&#39;use strict&#39;; 
 
function async(value) { 
  return new Promise(function(resolve, reject) { 
    var ms = Math.round(Math.random() * 1000); 
    setTimeout(function() { 
      console.log(&#39;waiting &#39; + ms + &#39;ms&#39;); 
      // 等待ms毫秒 
      resolve(value + ms); 
    }, ms); 
  }); 
} 
// 每次执行随机等待n毫秒,结果统计总毫秒数 
async(0) 
.then(async) 
.then(async) 
.then(async) 
.then(async) 
.then(function(value) { 
  console.log(&#39;------total wait:&#39; + value + &#39;ms&#39;); 
}); 
//////////////////////////////////////////////////////////// 
function async1(value) { 
  return new Promise(function(resolve, reject) { 
    resolve(value + 1); 
  }); 
} 
function async2(value) { 
  // return new Promise(function(resolve, reject) { 
  //   resolve(value + 2); 
  // }); 
  // 等价与上面写法 
  return Promise.resolve(value + 2); 
} 
function async3(value) { 
  return new Promise(function(resolve, reject) { 
    resolve(value + 3); 
  }); 
} 
async1(100).then(async2).then(async3).then(function(value) { 
  console.log(&#39;------&#39; + value); 
}); 
///////////////////////////////////////////////////////////////// 
function say() { 
  var value = &#39;what&#39;; 
  return Promise.resolve(value); 
} 
say().then(function(value) { 
  value = value + &#39; are&#39;; 
  return Promise.resolve(value); 
}).then(function(value) { 
  value = value + &#39; you&#39;; 
  return Promise.resolve(value); 
}).then(function(value) { 
  value = value + &#39; doing&#39;; 
  return Promise.resolve(value); 
  //return Promise.reject(&#39;error, exit&#39;); // 中途退出 
}).then(function(value) { 
  value = value + &#39; now!&#39;; 
  return Promise.resolve(value); 
}).then(function(value) { 
  console.log(&#39;------&#39; + value); 
}).catch(function(error) { 
  console.log(&#39;------&#39; + error); 
}); 
<html> 
<head> 
  <title>Ball move</title> 
  <style type="text/css"> 
    .ball { 
      width: 40px; 
      height: 40px; 
      border-radius: 20px; 
      margin-left: 10px; 
    } 
    .ball1 { 
      background: #ff0000; 
    } 
    .ball2 { 
      background: #00ff00; 
    } 
    .ball3 { 
      background: #0000ff; 
    } 
  </style> 
  <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> 
</head> 
<body> 
  <p class="ball ball1"></p> 
  <p class="ball ball2"></p> 
  <p class="ball ball3"></p> 
  <script type="text/javascript"> 
    function moving(ball, pos) { 
      return new Promise(function(resolve, reject) { 
        var marginLeft = parseInt(ball.css(&#39;margin-left&#39;)); 
        if (marginLeft != pos) { 
          var timerId = setInterval(function() { 
            marginLeft = marginLeft + 1; 
            ball.css(&#39;margin-left&#39;, marginLeft); 
            if (marginLeft == pos) { 
              clearInterval(timerId); 
              resolve(); 
            } 
          }, 20); 
        } else { 
          resolve(); 
        } 
      }); 
    } 
    moving($(&#39;.ball1&#39;), 100).then(function() { 
      return moving($(&#39;.ball2&#39;), 150); 
    }).then(function() { 
      return moving($(&#39;.ball3&#39;), 200); 
    }); 
  </script> 
</body> 
</html>
Nach dem Login kopieren

Das Obige ist der vom Herausgeber eingeführte Beispielcode (Demo) für die Verwendung von Promise in JS. Ich hoffe, er wird für alle hilfreich sein! !

Verwandte Empfehlungen:

Spezifische Möglichkeiten zur Verwendung von jQuerys Promise

Wie Sie ein vollständiges Promise implementieren

Über die einfache Verwendung von Promise-Objekten

Das obige ist der detaillierte Inhalt vonPromise in JS verwenden, um Ampel-Beispielcode zu implementieren (Demo). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!