如何记录 JavaScript 承诺的已解决值
How to document resolved values of JavaScript promises
鉴于此代码:
function asyncFoo() {
return new Promise(function (fulfill, reject) {
doAsyncStuff(function(err, data) {
if(err) reject(new Error(err));
else fulfill(new Bar(data));
});
});
}
我如何记录 asyncFoo
将 return 一个 Promise
,当满足时将产生一个 Bar
的实例,而当被拒绝时将产生一个实例Error
?
/**
* @return << Here, what do I have to write? >>
*/
function asyncFoo() { ... }
根据 some other source code's comments。
看来您应该执行以下操作
/**
* @return {Promise.<Bar>}
*/
How JavaScript Promises are documented.
Similar question with a similar answer. 请注意该答案中缺少一个点。
我想用 @async
指定它是一个异步函数,用 @returns
指定完成的 return 和用 @throws
指定错误
/**
* @async
* @returns {Bar}
* @throws {Error}
*/
function asyncFoo() { ... }
我个人更喜欢严格区分 - 从异步函数声明最终类型,从直接 returns Promise 的函数声明 Promise。
/**
Async JSON request
@param {string} sql
@returns {object}
*/
async function request(sql)
{
return JSON.parse(await dbEngine.executeRequest(sql));
}
/**
Async JSON request
@param {string} sql
@returns {Promise<string>}
*/
function request(sql)
{
return dbEngine.executeRequest(sql);
}
鉴于此代码:
function asyncFoo() {
return new Promise(function (fulfill, reject) {
doAsyncStuff(function(err, data) {
if(err) reject(new Error(err));
else fulfill(new Bar(data));
});
});
}
我如何记录 asyncFoo
将 return 一个 Promise
,当满足时将产生一个 Bar
的实例,而当被拒绝时将产生一个实例Error
?
/**
* @return << Here, what do I have to write? >>
*/
function asyncFoo() { ... }
根据 some other source code's comments。
看来您应该执行以下操作/**
* @return {Promise.<Bar>}
*/
How JavaScript Promises are documented.
Similar question with a similar answer. 请注意该答案中缺少一个点。
我想用 @async
指定它是一个异步函数,用 @returns
指定完成的 return 和用 @throws
/**
* @async
* @returns {Bar}
* @throws {Error}
*/
function asyncFoo() { ... }
我个人更喜欢严格区分 - 从异步函数声明最终类型,从直接 returns Promise 的函数声明 Promise。
/**
Async JSON request
@param {string} sql
@returns {object}
*/
async function request(sql)
{
return JSON.parse(await dbEngine.executeRequest(sql));
}
/**
Async JSON request
@param {string} sql
@returns {Promise<string>}
*/
function request(sql)
{
return dbEngine.executeRequest(sql);
}