gpt4 book ai didi

javascript - console.log 返回待处理的 promise ,而不是实际数据

转载 作者:行者123 更新时间:2023-11-28 13:07:50 24 4
gpt4 key购买 nike

所以我有这个文件:

 '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 作为值返回,而不是待处理的 promise 。

最佳答案

是的,只有当你从这里返回 promise 时,你才会得到 promise

return getData(pastReport, laterReport).then((res) => {

    return res; //Do callback here...
});

这是您的主要返回值,我的意思是测试函数的返回值,并且您仅返回了 Promise,并注意您从那时返回的内容将仅在该函数中返回,因此它不会反射(reflect)在测试的返回值中。如果您不想更改代码,可以使用回调

或将其更改为

return getData(pastReport, laterReport)

并像这样进行测试调用

test(...).then((res)=>{ 
})
Or like this
var a = await test(...)
then test will return data.

关于javascript - console.log 返回待处理的 promise ,而不是实际数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45214887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com