2016-03-08 16 views
7

Với mã này:giá trị như thế nào vào tài liệu giải quyết của JavaScript hứa hẹn

function asyncFoo() { 
    return new Promise(function (fulfill, reject) { 
    doAsyncStuff(function(err, data) { 
     if(err) reject(new Error(err)); 
     else fulfill(new Bar(data)); 
    }); 
    }); 
} 

Làm thế nào tôi có thể ghi nhận rằng asyncFoo sẽ trả về một Promise đó, khi hoàn thành sẽ mang lại một thể hiện của Bar, và khi bị từ chối sẽ mang lại một thể hiện của Error?

/** 
* @return << Here, what do I have to write? >> 
*/ 
function asyncFoo() { ... } 
+0

> câu hỏi tương tự để https://stackoverflow.com/questions/13104411/how- to-specified-resolution-and-từ chối-type-of-the-promise-in-jsdoc/46733261 # 46733261 – holmberd

Trả lời

14

Có vẻ như bạn nên làm như sau, dựa trên some other source code's comments.

/** 
* @return {Promise.<Bar>} 
*/ 

How JavaScript Promises are documented.

Similar question with a similar answer. Lưu ý việc thiếu một dấu chấm trong câu trả lời đó.

+0

Dấu chấm có được đề xuất hay không? Các tài liệu JSDoc trớ trêu thay không tốt lắm. – mpen

+0

Để biết thêm thông tin, hãy xem tại đây: https://stackoverflow.com/a/44726521/828366 –

8

Tôi thích để xác định rằng nó là một chức năng async với @async và xác định sự trở lại hoàn thành với @returns và lỗi với @throws

/** 
* @async 
* @returns {Bar} 
* @throws {Error} 
*/ 
function asyncFoo() { ... } 
+1

Phải là câu trả lời được chấp nhận. Làm việc như một say mê. Chỉ bằng cách này, kết quả được nhận dạng đúng bởi IDE khi giá trị trả về được định nghĩa là Giao diện trong tệp TypeScript (chỉ để tự động hoàn thành gọn gàng). – Miraage

+0

và chưa, fn không trả về '{Bar}' cũng không ném '{Error}' – Mr5o1

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