subtest1(conn, values) è un generatore. yield ing un oggetto generatore non esegue il suo corpo. Cioè, il generatore prodotto rimane sospeso e richiederebbe una chiamata a next() metodo per il primo yield da raggiungere. Non ci sono chiamate esplicite o implicite a next() in Esempio di codice 2 , e questo è il motivo conn.query(...) non viene eseguito.
Che ne dici di yield* subtest1(conn, values)
? Dalla pagina collegata:
Eseguirà comunque subtest pigramente.
Una soluzione alternativa è quella di attivare subtest in una funzione regolare e restituisce il risultato di conn.query(...) (supponendo che tu debba eseguire solo una query):
function subtest1(conn, values) {
return conn.query("INSERT INTO version SET ?", values);
}