2017-08-10 47 views
12

我有一個功能f,返回Promise。返回的Promise或者resolve({name: String, data: Object})reject(Error)VSCode:如何記錄用複雜對象解決的承諾?

我試過下面的語法在VSCode(如an issue in JSDoc提到),但它不工作:

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

回答

5

我認爲最好的辦法是來包裝你fulfill響應到自定義對象:

/** 
* @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' 
    } 
} 

這將顯示在VS代碼:

enter image description here

0

要儘可能明確,爲什麼不把對象的性質上一行描述?它只是對這種滿足的描述。

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

或者,如果你想處理動態生成的對象鍵,類似於Google Style Guide

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

,允許任何人閱讀您的意見,瞭解返回的對象是什麼樣子,鍵是什麼,以及每個鍵應該具有哪種類型的值。

除非,你試圖說它可以返回三種可能性中的任何一種。然後我認爲你的原始格式對Promise被實現的可能結果有更多描述。

+0

在我的情況下,結果履行承諾可能包含10個以上的靜態密鑰,因此將它們記錄在一行中是不方便的。 – lz96