【发布时间】:2019-01-21 12:39:22
【问题描述】:
我正在编写一个服务,它通过 API 调用来获取所有预订,然后从这些预订中获取所有进行这些预订的 coworkerId 的列表。然后,我获取唯一 ID 并使用它们进行另一组调用,以获取所有同事记录的数组。完成此步骤后,我将对订单项调用执行相同的操作,但是由于某种原因,我无法获取同事对象的列表。
这是我的代码:
apiService.getBookingsList(`?size=1000&from_Booking_FromTime=${weekAgo.toISOString()}`).then(bookings => {
const bookingCoworkerIds = bookings.map(booking => booking.CoworkerId);
const bookingCoworkerIdsUnique = bookingCoworkerIds.filter(recordParser.onlyUnique);
const getCoworker = function getCoworkerInfo(coworkerId) {
return apiService.getSingleCoworker(coworkerId);
}
const bookingCoworkerCalls = bookingCoworkerIdsUnique.map(coworkerId => getCoworker(coworkerId));
const bookingCoworkers = Promise.all(bookingCoworkerCalls);
bookingCoworkers.then(coworkers => {
console.log(coworkers.length);
console.log(coworkers[0]);
});
});
这里是 apiService.getSingleCoworker 的代码:
getSingleCoworker(coworkerId) {
// returns a single coworker object given their ID
return httpsRequest.createRequest(this.URL.coworkerList + `?Coworker_Id=${coworkerId}`, {}, this.requestHeaders, 'GET')
.then(result => JSON.parse(result).Records[0]);
}
我也可以发布我的 https 代码,但我认为这不是问题。
我怀疑我的 Promise 模式有问题,因为我对 Promise 和一般的异步代码仍然很陌生。这些控制台日志都没有到达,而唯一的输出是:
(node:1) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): SyntaxError: Unexpected end of JSON input
那么我在这里做错了什么?
【问题讨论】:
-
SyntaxError: Unexpected end of JSON input您验证 JSON 是否正确?看起来它没有正确捕获错误。 -
SyntaxError: Unexpected end of JSON input表示您的result(至少其中之一)不是有效的 JSON 字符串。在尝试解析之前尝试记录它们。然后相应地修复createRequest或您的服务器代码。 -
如果返回的响应无效,有没有快速修改getSingleCoworker()重试的方法?
标签: javascript node.js ecmascript-6 promise es6-promise