js使用yield模擬多執行緒的方法簡單介紹

antzone發表於2017-04-04

在python和C#中都有yield方法,通過yield可以實現很多多執行緒才能實現的功能。 

javascript有版本要求:JavaScript 1.7

[JavaScript] 純文字檢視 複製程式碼
function Thread( name ) {
  for ( var i = 0; i < 5; i++ ) {
    Print(name+': '+i);
    yield;
  }
}
//// thread management
var threads = [];
// thread creation
threads.push( new Thread('foo') );
threads.push( new Thread('bar') );
// scheduler
while (threads.length) {
  var thread = threads.shift();
  try {
    thread.next();
    threads.push(thread);
  } catch(ex if ex instanceof StopIteration) {}
}

輸出結果如下:

[JavaScript] 純文字檢視 複製程式碼
foo: 0
bar: 0
foo: 1
bar: 1
foo: 2
bar: 2
foo: 3
bar: 3
foo: 4
bar: 4

相關文章