Tôi đang xử lý khung NodeJs yêu cầu một hàm nhất định phải đồng bộ, nhưng tôi cần lấy một giá trị chỉ có thể truy cập không đồng bộ. Trong một thế giới hoàn hảo, tôi sẽ có thể trả lời một lời hứa, nhưng tôi không thể.Làm cách nào để chờ lời hứa được giải quyết?
Là một giải pháp nhanh chóng-và-bẩn, tôi đã tạo ra phương pháp sau đây:
exports.synchronizePromise = function(promise) {
var value;
promise.then(function(promiseValue) {
value = promiseValue;
});
while (!value) {} // Wait for promise to resolve
console.log("DONE: " + value); // Never reached
return value;
};
Nhưng tôi nhận được một lỗi. Có cách nào để hoàn thành những gì tôi cần không?
hứa hẹn sẽ không làm cho mọi thứ được đồng bộ hóa một cách kỳ diệu, chúng chỉ thực hiện một số quy trình không đồng bộ dễ dàng hơn để mã và quản lý thông qua nhiều bước. không sử dụng vòng lặp để cố gắng đóng băng, chỉ cần khắc phục sự cố ngược dòng bằng cách chia nhỏ mọi thứ được đồng bộ hóa thành hai phần. – dandavis
@ dandavis Tôi đã cân nhắc tạo một cam kết cho khung làm việc mà tôi đang sử dụng để làm cho nó có thể hoạt động không đồng bộ, nhưng nó được gọi ở quá nhiều vị trí và 99% thời gian, nó không cần phải bằng cách không đồng bộ. Nó không thực sự là một lựa chọn để sửa chữa nó ngược dòng. –
bạn ngay lập tức có thể trả lại một guid sau khi gửi quá trình, và khi quá trình hoàn tất, hãy tìm guid trong dữ liệu/dom của bạn và thay thế cho giá trị thực tế. – dandavis