2017-02-20 17 views
6

đâu đó đọc ví dụ này:Hứa hẹn. sự khác biệt betwen trở lại quyết tâm() và quyết tâm là gì()

return new Promise((resolve, reject) => { 
    fs.readFile(file, (err, data) => { 
    if (err) reject(err) 
    return resolve(data) 
    }) 
}) 

nhưng tôi thường làm điều này:

return new Promise((resolve, reject) => { 
    fs.readFile(file, (err, data) => { 
    if (err) reject(err) 
    resolve(data) 
    }) 
}) 

là có một sự khác biệt?

+2

Nó sẽ không tạo sự khác biệt ở đây. – elclanrs

+0

Tôi nghĩ rằng trong trường hợp đầu tiên, bạn có thể chuỗi, nhưng trong trường hợp thứ hai, bạn không thể –

Trả lời

11

return resolve() sẽ chỉ kết thúc thực thi chức năng như bình thường return, điều đó chỉ phụ thuộc vào luồng mã của bạn, Nếu bạn không muốn hoặc cần thêm bất kỳ mã nào trong hàm của mình để thực thi, hãy sử dụng return để thoát chức năng

return new Promise((resolve, reject) => { 
    fs.readFile(file, (err, data) => { 
    if (err) reject(err) 
    return resolve(data) 
    console.log('after return') // won't execute 
    }) 
}) 

chỉ resolve sẽ tạo ra một nhà nước thành công hứa hẹn, nhưng sẽ thực hiện thực thi mã nếu có bất kỳ khi return không được sử dụng.

Ghi resolve()reject() tạo trạng thái của lời hứa, họ không thể thay đổi một lần nhà nước được tạo ra, .then.catch xử lý được sử dụng để thực hiện hơn nữa, sử dụng return hoàn toàn phụ thuộc vào dòng mã của bạn. Nếu bạn không muốn thực thi mã hơn trong khối đó, sau đó return resolve()

return new Promise((resolve, reject) => { 
    fs.readFile(file, (err, data) => { 
    if (err) reject(err) 
    resolve(data) 
    console.log('after return') // will execute 
    }) 
}) 

nó chỉ giống như một return tuyên bố bình thường trong một function và không có gì để làm với một lời hứa

+0

Sẽ hữu ích khi chỉ ra cách cả hai phản ứng khi trạng thái '.then' được tạo - tức là một trạng thái sẽ thất bại, một sẽ không . – brandonscript

Các vấn đề liên quan