Mari kita lihat kodnya dahulu:
function wrapper(generatorFunction) { return function (...args) { let generatorObject = generatorFunction(...args); generatorObject.next(); return generatorObject; }; } const wrapped = wrapper(function* () { console.log(`First input: ${yield}`); return 'DONE'; }); wrapped().next('hello!') // First input: hello!
Bagaimana untuk memahami hasil output ini? Setelah berfikir panjang, saya tidak dapat memahami keputusan pembedahannya.
Terdapat juga kod berikut:
function* dataConsumer() { console.log('Started'); console.log(`1. ${yield}`); console.log(`2. ${yield}`); return 'result'; } let genObj = dataConsumer(); genObj.next(); // Started genObj.next('a') // 1. a genObj.next('b') // 2. b
Saya masih tidak faham, tolong bantu saya menganalisis dua keping kod di atas dan bantu saya mempelajari fungsi Penjana. Terima kasih.
yield
Kata kunci mempunyai dua fungsi:Menjeda pelaksanaan fungsi penjana dan mengembalikan nilai ungkapan berikut
Sambung semula pelaksanaan fungsi penjana dan dapatkan parameter pilihan yang diluluskan oleh kaedah
next
Dua contoh yang anda berikan kedua-duanya menggunakan
.yield
接收了next
untuk menerima parameter yang dihantar melalui kaedah