如何强制解决异步功能

时间:2019-04-12 14:09:30

标签: javascript node.js asynchronous sails.js

我正在使用Sails.js来构建我的API,因此,作为航行的一部分,我可以覆盖或修改customToJSON方法。基本上,这就是问题所在,customToJSON方法是一种同步方法,但是我正在内部执行一些异步操作。有我的代码:

async customToJSON() {
  // set the interpolate characteres to `{{` and `}}`
  _.templateSettings.interpolate = /{{([\s\S]+?)}}/g;
  const NOTIFICATION_TYPE = notificationTypes[this.type];

  // --->>> THIS IS THE ASYNC METHOD <<<---
  const templateParams = await Notification._getTemplateParams(this);

  // compile templates
  const compiledLink = _.template(
    NOTIFICATION_TYPE.link, { imports: templateParams }
  );
  const compiledTitle = _.template(
    NOTIFICATION_TYPE.title, { imports: templateParams }
  );
  const compiledDescription = _.template(
    NOTIFICATION_TYPE.description, { imports: templateParams }
  );

  return {
    ..._.omit(this, ['relatedModels']),
    _params: templateParams,
    link: compiledLink(templateParams),
    title: compiledTitle(templateParams),
    description: compiledDescription({}),
  }
},

它不起作用,因为sails被设计为以 sync 的形式运行此方法。所以问题是:有什么方法可以强制履行诺言?

我将node v8.10sails v1action2一起使用

1 个答案:

答案 0 :(得分:0)

看着Sails documentation

  

当前customToJSON函数不支持异步   功能。

(单击链接以获取更多详细信息)

因此customToJSON中不能包含异步代码。相反,您应该先调用Notification._getTemplateParams函数。