【发布时间】:2018-05-01 06:53:42
【问题描述】:
我是 Javascript async 和 Sails.js 的新手,我觉得我误解了一些概念。
我有一个函数试图进行 HTTP GET 调用以从 URL 获取 cmets 作为 JSON,然后解析这些 cmets 以提供一个“分数”对象来对用户 cmets 进行评分。我的代码示例如下 -
fn: async function (inputs, exits) {
let commentsUrl = 'http://foobar.com';
// we want to return a score of the users comments
let score = {};
// callback function that calls a helper to score comments
let processComments = async function (error, result) {
let scored = await sails.helpers.scoreComments(result);
return scored;
}
let HTTP = require('machinepack-http');
// go get JSON data of user comments
HTTP.get({
url: commentsUrl,
data: {},
headers: {}
}).exec((err, result) => score = processComments(err, result)
);
// this should be awaiting for the processComments callback to finish?
return exits.success(score);
我的问题可能很明显 - 函数在回调完成执行之前立即返回,并且 score 的值只是 {}。我已经尝试过将 HTTP.get 调用更改为 --
// go get JSON data of user comments
HTTP.get({
url: commentsUrl,
data: {},
headers: {}
}).exec((err, result) => score = await processComments(err, result)
);
但这会导致编译错误,指出sails 不理解processComments 回调前面的'await' 关键字。
我误解了什么?我想将 'scored' 的值返回给 main 函数,并觉得我应该'等待'一些东西,但我不确定在哪里。
【问题讨论】:
标签: javascript http async-await sails.js