2017-08-10 36 views
12

Tôi có chức năng f trả về Promise. Số trả lại Promise hoặc resolve({name: String, data: Object}) hoặc reject(Error).VSCode: Cách ghi lại lời hứa giải quyết bằng đối tượng phức tạp?

Tôi đã thử các cú pháp sau (như đã đề cập trong an issue in JSDoc) trong VSCode, nhưng nó không hoạt động:

/** 
* @promise fPromise 
* @reject {Error} 
* @fulfill {Object} project 
* @fulfill {Object} project.data 
* @fulfill {String} project.name 
* @returns fPromise 
*/ 

Trả lời

5

Tôi nghĩ rằng đặt cược tốt nhất của bạn là để quấn phản ứng fulfill của bạn thành một đối tượng tùy chỉnh:

/** 
* @promise fPromise 
* @reject {Error} 
* @fulfill {Project} 
* @returns {Promise.<Project>} 
*/ 
function renderResults(data) { 
    return new Promise((resolve, reject) => { 
     resolve(new Project()) 
    }) 
} 

renderResults() 

function Project() { 
    this.data = "data"; 
    this.name = "project phoenix" 
    this.location = { 
     city: 'seattle', 
     state: 'wa' 
    } 
} 

này sẽ hiển thị trong VS Mã như thế này:

enter image description here

0

Để được càng rõ ràng càng tốt, tại sao không đưa bản chất của đối tượng trên một dòng cho mô tả? Nó chỉ được coi là một mô tả về sự hoàn thành đó.

/** 
* @promise fPromise 
* @fulfill {Object} A project object with the format {name: String, data: Object} 
* @reject {Error} 
* @returns fPromise 
*/ 

Hoặc, nếu bạn muốn xử lý phím đối tượng tự động tạo ra, tương tự như Google Style Guide:

/** 
* @promise fPromise 
* @fulfill {Object.<String, Object>} 
* @reject {Error} 
* @returns fPromise 
*/ 

đó cho phép bất cứ ai đọc comment của bạn để hiểu những gì các đối tượng quay trở lại có vẻ như, những gì các phím và loại giá trị nào sẽ ở trong mỗi khóa.

Trừ khi, bạn đang cố gắng nói rằng nó có thể trả lại bất kỳ trong ba khả năng. Sau đó, tôi nghĩ rằng định dạng ban đầu của bạn là một chút mô tả hơn về các kết quả có thể có của Lời hứa được hoàn thành.

+0

Trong trường hợp của tôi, kết quả lời hứa hoàn thành có thể chứa hơn 10 khóa tĩnh, do đó, bất tiện khi ghi lại chúng trong một dòng. – lz96

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