Làm sao để một hàm có thế lấy kết quả của hàm bất đồng bộ khác

Dạ cho em hỏi cái này với!

const func1 = () => {
    let x = 0; 
    Promise.resolve(99).then(value => x = value);
    return x;
}       
console.log(func()); // ra 0 

Làm sao để lấy được số 99 mà không dùng await, async cho hàm func1, hàm func1 vẫn là hàm đồng bộ bình thường có được không?

Giả sử func1async, nếu hàm func2 gọi tới func1 thì func2 cũng phải async, tương tự func3 gọi tới func2 thì func3 cũng phải async, cuối cùng thành hiệu ứng dây chuyền hàng loạt function trở thành asyc chỉ vì 1 hàm func0 ?

Mong được giải thích, em cảm ơn nhiều!

Không, nếu như được thì tại sao người ta phải đẻ ra async chi cho cực?

Đúng

7 Likes

Ví dụ của bạn là 1 sai lầm nếu nói về async vì nó là hàm sync return 0 và luôn luôn là 0 do return number là return by value.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?