Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

คีย์เวิร์ด yield ใน JavaScript คืออะไร?

คีย์เวิร์ด yield ใช้ใน JavaScript เพื่อ หยุดชั่วคราว (pause) และดำเนินต่อ (resume) generator function ค่าของ expression จะถูกคืนให้ caller ของ generator

ตัวอย่าง:

function* displayRank() { 
  var selPlayers = [1, 2, 3, 4]; 
  for (var a = 0; a < selPlayers.length; a++) { 
    yield selPlayers[a];  // ตรงนี้แก้ i → a
  } 
}

หลังจากกำหนด generator function ใช้งานได้ดังนี้:

var rank = displayRank(); // สร้าง generator object
// value: 1
alert(rank.next()); 
// value: 2
alert(rank.next()); 
// value: 3
alert(rank.next()); 
// value: 4
alert(rank.next()); 
// value: undefined (จบ iteration)
alert(rank.next());

รายละเอียด Generator Functions

  • ประกาศด้วย function* (asterisk)
  • คืนค่า Generator object (implements Iterator protocol)
  • yield หยุด execution และคืนค่า { value, done }
  • next() เรียกต่อจากจุดที่หยุด
  • ใช้สำหรับ: lazy evaluation, infinite sequences, async flow control

ตัวอย่างเพิ่มเติม: Infinite Sequence

function* idGenerator() {
  let id = 0;
  while (true) yield id++;
}

const gen = idGenerator();
console.log(gen.next().value); // 0
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
// ไม่มีที่จบ