Recommended
PDF
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
PDF
PDF
PDF
PDF
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
PDF
Async design with Unity3D
PPTX
PDF
PDF
PDF
Precise garbage collection for c
PDF
大阪Node学園 六時限目 「generator小咄」
PDF
PDF
PDF
PDF
PDF
Continuation with Boost.Context
PDF
PDF
Android Lecture #03 @PRO&BSC Inc.
PDF
effective modern c++ chapeter36
PDF
PDF
PDF
PDF
PDF
PDF
New features of Groovy 2.0 and 2.1
PPTX
PDF
About GStreamer 1.0 application development for beginners
PPTX
Node.js - sleep sort algorithm
PPT
Javascriptで無限ループを実現する5つの方法
PDF
More Related Content
PDF
「Grails-1.1を斬る!〜Grails-1.1からのチーム開発〜」
PDF
PDF
PDF
PDF
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
PDF
Async design with Unity3D
PPTX
PDF
What's hot
PDF
PDF
Precise garbage collection for c
PDF
大阪Node学園 六時限目 「generator小咄」
PDF
PDF
PDF
PDF
PDF
Continuation with Boost.Context
PDF
PDF
Android Lecture #03 @PRO&BSC Inc.
PDF
effective modern c++ chapeter36
PDF
PDF
PDF
PDF
PDF
PDF
New features of Groovy 2.0 and 2.1
PPTX
PDF
About GStreamer 1.0 application development for beginners
PPTX
Node.js - sleep sort algorithm
Similar to Node.js - JavaScript Thread Programming
PPT
Javascriptで無限ループを実現する5つの方法
PDF
PDF
PPTX
Async awaitでの繰り返し処理についての小話
PDF
Project Loom - 限定継続と軽量スレッド -
PPTX
PPTX
PPTX
PDF
東京Node学園#3 Domains & Isolates
PPTX
そうだったのか! よくわかる process.nextTick() node.jsのイベントループを理解する
PDF
PDF
PDF
PPTX
PDF
PDF
PDF
PDF
C#次世代非同期処理概観 - Task vs Reactive Extensions
PDF
KEY
More from takesako
PDF
SECCON CTF セキュリティ競技会コンテスト開催について
PDF
PDF
PPTX
PPTX
PDF
PDF
Perl6 Regex Programming with Rakudo
PDF
That Goes Without Alpha-Num (or Does It ?) all your base10 are belong to us
PDF
Devsumi2010 Ecmascript5 (ISO/IEC JTC1/SC22)
PDF
PPT
YAPC::Asia 2008 Closing Ceremony
PPT
HTML Binary Hacks & GIF89a Ployglot
PDF
Devsumi2008 - YAPC::Asia 2008 Tokyo
PPT
PPT
PPT
HTML2.0 - digg - OSC2007-fall
PPT
Shibuya.pm#8 - ImageFight - HTML 2.0 New Browser Detection
PPT
Shibuyajs24 JavaScript.GIF x LiveConnect
Recently uploaded
PDF
エンジニアが選ぶべきAIエディタ & Antigravity 活用例@ウェビナー「触ってみてどうだった?Google Antigravity 既存IDEと...
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #1
PPTX
楽々ナレッジベース「楽ナレ」3種比較 - Dify / AWS S3 Vector / Google File Search Tool
PDF
20251210_MultiDevinForEnterprise on Devin 1st Anniv Meetup
PDF
Machine Tests Benchmark Suite. Explain github.com/alexziskind1/machine_tests #2
PDF
流行りに乗っかるClaris FileMaker 〜AI関連機能の紹介〜 by 合同会社イボルブ
Node.js - JavaScript Thread Programming 1. 2. 3. sleep のない言語 JavaScriptどうやって実現するか?function sleep(msec) { // CPU_100% var t = (new Date()).getTime()-(-msec); while ( (new Date()).getTime() < t ) {} }function sleep(msec) { // LiveConnect Packages.java.lang.Thread.sleep(msec); } 4. クロスブラウザで sleep を実現(無理矢理)function sleep(msec) { try { // for IEwindow.showModalDialog( "javascript:document.write('<script>" + "window.setTimeout(function(){window.close()}," + msec + ");<"\/script>');"); } catch (e) { try { // for Firefox, Opera with LiveConnectPackages.java.lang.Thread.sleep(msec); } catch (e) { // for Safari and others var limit = (new Date()).getTime() - (-msec); while ((new Date()).getTime() < limit) {} } } } 5. 1秒ごとに表示したい(よくある間違い)<script>function sleep(msec) {var t = (new Date()).getTime() - (-msec); while ( (new Date()).getTime() < t );}function init() {var body = document.body; sleep(1000);body.innerHTML += "<h1>Hello!</h1>"; sleep(1000);body.innerHTML += "<h2>Hello?</h2>"; sleep(1000);body.innerHTML += "<h3>Hello!?</h3>";};</script><body onload="init()"></body> 6. 7. 8. 9. 10. 11. 12. 13. yield で1秒ごとに表示<!DOCTYPE html><title>Firefox2.0+ only</title><script type="application/javascript;version=1.7">(function(g){var f=arguments.callee;setTimeout( function(){f(g)},g.next())})((function(){ yield (1000);document.body.innerHTML += "<h1>Hello!</h1>"; yield (1000);document.body.innerHTML += "<h2>Hello?</h2>"; yield (1000);document.body.innerHTML += "<h3>Hello!?</h3>";})());</script> 14. 15. やりたいこと = 細かく setTimeoutを呼ぶ// こんな風に書けたらいいなぁ(><) for (var i = 0; i < 10000000; i++) { // すん // ごく // 重たい // 処理 // ・・・setTimeout(次の行, 0); // ブラウザに処理を戻す // でもループの中は繰り返したい } // 終了 16. 17. yield を含む関数は Generator になるfunction generator() { for (var i = 1; i <= 1000; i++) { document.title = i; yield; }}var g = generator(); // [object Generator]// まだ document.title は変更されない 18. Generator#nextで次の yield まで実行戻るfunction generator() { for (var i = 1; i <= 1000; i++) { document.title = i; yield; }}var g = generator(); // [object Generator]g.next(); // document.title = 1;g.next(); // document.title = 2;g.next(); // document.title = 3; 19. uncaught exception: [object StopIteration]function generator() { for (var i = 1; i <= 1000; i++) { document.title = i; yield; }}var g = generator();for (var j = 1; j <= 998; j++) { g.next() }g.next(); // document.title = 999;g.next(); // document.title = 1000;g.next(); // Error: uncaught exception: // [object StopIteration] 20. Generator#closefunction generator() { for (var i = 1; i <= 1000; i++) { document.title = i; yield; }}var g = generator();for (var j = 1; j <= 998; j++) { g.next() }g.next(); // document.title = 999;g.next(); // document.title = 1000;g.close(); 21. yield の引数が next() の戻り値になるfunction generator() { for (var i = 1; i <= 1000; i++) { document.title = i; yield (i); }}var g = generator();var r;r = g.next(); // r = 1;r = g.next(); // r = 2;r = g.next(); // r = 3; 22. 23. 巨大ループ中で setTimeout(f, 0) が呼べる!function generator() { for (vari = 1; i <= 1000; i++) {document.title = i; yield true; } yield false;}function driveGenerator(g) { if (g.next()) { // yield true?var f = function(){ driveGenerator(g) };setTimeout(f, 0); } else {g.close(); // yield false }}driveGenerator( generator() ); 24. yield + setTimeoutイディオムが完成(function(g){var f=arguments.callee;var t=g.next(); (t<0) ? g.close():setTimeout(function(){f(g)},t)})((function(){ for (vari = 0; i < 10000; i++) {document.title = i; // 重たい処理 yield (0); // ブラウザに一旦処理を戻す(setTimeout) } yield (-1); // 終了})()); 25. 26. 27. JavaScript1.7 の指定をしないと yield 動かない<script type="application/javascript;version=1.7">(function(g){var f=arguments.callee;var t=g.next(); (t<0) ? g.close():setTimeout(function(){f(g)},t)})((function(){ for (vari = 0; i < 10000; i++) {document.title = i; // 重たい処理 yield (0); // ブラウザに一旦処理を戻す(setTimeout) } yield (-1); // 終了})());</script> 28. 29. 30. HTML5 Web Workers APImain.htmlworker.js(1) var worker = new Worker(“worker.js”);ワーカースレッドの作成(2) worker.postMessage(”hello”);(3) onmessage = function(e) {var result = e.data + ”!”;(4) postMessage(result);(5) worker.onmessage = function(e) { // DOM 更新処理window.alert(e.data); 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.