Làm cách nào để trả lại phản hồi từ cuộc gọi không đồng bộ?

ôi có một hàm footạo yêu cầu không đồng bộ. Làm cách nào để trả lại phản hồi / kết quả từ đó foo?

Tôi đã thử trả về giá trị từ lệnh gọi lại, cũng như gán kết quả cho một biến cục bộ bên trong hàm và trả về biến đó, nhưng không có cách nào trong số đó thực sự trả về phản hồi (tất cả đều trả về undefinedhoặc bất kể giá trị ban đầu của biến resultlà gì) .

Ví dụ sử dụng ajaxhàm của jQuery :

function foo() {
    var result;

    $.ajax({
        url: '...',
        success: function(response) {
            result = response;
            // return response; // <- I tried that one as well
        }
    });

    return result; // It always returns `undefined`
}

Ví dụ sử dụng node.js:

function foo() {
    var result;

    fs.readFile("path/to/file", function(err, data) {
        result = data;
        // return data; // <- I tried that one as well
    });

    return result; // It always returns `undefined`
}

Ví dụ sử dụng thenkhối của một lời hứa:

function foo() {
    var result;

    fetch(url).then(function(response) {
        result = response;
        // return response; // <- I tried that one as well
    });

    return result; // It always returns `undefined`
}
Đã hỏi - admin
15 ngày 9 giờ