subtest1(conn, values) jest generatorem. yield Tworzenie obiektu generatora nie wykonuje jego ciała. Oznacza to, że wygenerowany generator pozostaje zawieszony i wymagałby wywołania funkcji next() metoda dla pierwszego yield do osiągnięcia. Nie ma jawnych ani niejawnych wywołań next() w Przykładzie kodu 2 i to jest powód, dla którego conn.query(...) nie jest wykonywany.
Co powiesz na yield* subtest1(conn, values)
? Z połączonej strony:
Nadal wykona subtest leniwie.
Alternatywnym rozwiązaniem jest włączenie subtest do zwykłej funkcji i zwróć wynik conn.query(...) (zakładając, że wystarczy wykonać tylko jedno zapytanie):
function subtest1(conn, values) {
return conn.query("INSERT INTO version SET ?", values);
}