【发布时间】:2017-12-26 03:52:12
【问题描述】:
所以我有这个文件:
'use strict'
import * as moment from "moment";
import { Report} from "./Report";
import { Timeframe} from "./Timeframe";
import { ReportComparison } from "./ReportComparison";
function test(firstFrom: string, firstTo: string, secondFrom: string, secondTo: string) {
var pastReport = new Report(new Timeframe(moment(firstFrom), moment(firstTo)));
var laterReport = new Report(new Timeframe(moment(secondFrom), moment(secondTo)));
var reportComparison
function getData(pastReport: Report, laterReport: Report) {
var later = function() {
return new Promise((resolve, reject) => {
laterReport.fetchData(data => resolve(data));
});
};
var past = function() {
return new Promise((resolve, reject) => {
pastReport.fetchData(data => resolve(data));
});
};
return Promise.all([later(), past()]).then(() => {
laterReport.sort();
reportComparison = new ReportComparison(pastReport, laterReport);
return {
pastReport: {
projects: reportComparison.pastReport.projects,
timeFrame: reportComparison.pastReport.timeframe,
totalAutomatedRuns: reportComparison.pastReport.totalAutomatedRuns,
totalManualRuns: reportComparison.pastReport.totalManualRuns
},
laterReport: {
projects: reportComparison.laterReport.projects,
timeFrame: reportComparison.laterReport.timeframe,
totalAutomatedRuns: reportComparison.laterReport.totalAutomatedRuns,
totalManualRuns: reportComparison.laterReport.totalManualRuns
},
trends: reportComparison.trends
}
});
}
return getData(pastReport, laterReport).then((res) => {
return res;
});
}
console.log(test("20170707", "20170707", "20170710", "20170710"))
现在,console.log 返回Promise { <pending> },而不是我想要返回的实际值(JSON 对象)。我是否正确处理了这个异步代码?我可以使用什么解决方案将 JSON 作为值返回,而不是未决的承诺。
【问题讨论】:
-
@Bergi FWIW 原来有一个额外的
console.log- 为了清楚起见,它被删掉了
标签: javascript json typescript asynchronous