如何记录JavaScript承诺的已解析值

时间:2016-03-08 13:48:36

标签: javascript jsdoc

鉴于此代码:

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

我如何记录asyncFoo将返回Promise,在完成后会产生Bar的实例,并且当被拒绝时会产生Error的实例?

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

3 个答案:

答案 0 :(得分:17)

看起来您应该根据some other source code's comments执行以下操作。

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

How JavaScript Promises are documented.

Similar question with a similar answer.注意答案中缺少一个点。

答案 1 :(得分:8)

我想指定它是@async的异步函数,并使用@returns指定已完成的返回,并使用@throws指定错误

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

答案 2 :(得分:0)

我个人更喜欢严格区分 - 从异步函数声明最终类型,从直接返回 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);
}