Làm thế nào tôi có thể làm công việc nàyNode.js async để đồng bộ hóa
var asyncToSync = syncFunc();
function syncFunc() {
var sync = true;
var data = null;
query(params, function(result){
data = result;
sync = false;
});
while(sync) {}
return data;
}
tôi đã cố gắng để có được chức năng đồng bộ hóa từ async một, tôi cần nó để sử dụng freetds truy vấn async như đồng bộ hóa một
Async callbacks luôn chạy sau khi chức năng ngăn xếp đã bị xóa. Do đó, không thể trả lại kết quả ansyc một cách đồng bộ. Bất kỳ chức năng đồng bộ nào bắt đầu một hành động không đồng bộ phải nhất thiết phải trả lại trước khi hành động async bắt đầu. ** Thay vào đó **, bạn muốn làm cho hàm bên ngoài của bạn * cũng * không đồng bộ bằng cách chấp nhận một cuộc gọi lại được gọi bên trong hàm gọi lại đến 'truy vấn'. – apsillers
Chức năng truy vấn có thực hiện cuộc gọi cơ sở dữ liệu không? Nếu vậy, máy khách DB có thể cung cấp phiên bản đồng bộ của hàm truy vấn đó. – helpermethod
Nhân bản: [Cách chặn các hàm không đồng bộ trong JavaScript] (http://stackoverflow.com/questions/4345945/how-to-block-on-asynchronous-functions-in-javascript) (nhưng không có nhiều câu trả lời giải thích tốt) – apsillers