subtest1(conn, values)
là một máy phát điện. yield
ing một đối tượng trình tạo không thực thi phần thân của nó. Nghĩa là, trình tạo năng suất vẫn bị treo và nó sẽ yêu cầu một lệnh gọi đến next()
phương thức cho yield
đầu tiên đạt được. Không có lệnh gọi ngầm hoặc rõ ràng nào đến next()
trong Mẫu mã 2 và đây là lý do conn.query(...)
không được thực thi.
Còn về yield* subtest1(conn, values)
? Từ trang được liên kết:
Nó sẽ vẫn thực thi subtest
uể oải.
Một giải pháp thay thế là chuyển subtest
thành một hàm thông thường và trả về kết quả là conn.query(...)
(giả sử bạn chỉ cần thực hiện một truy vấn):
function subtest1(conn, values) {
return conn.query("INSERT INTO version SET ?", values);
}