gpt4 book ai didi

javascript - Promised API 调用不会执行

转载 作者:太空宇宙 更新时间:2023-11-04 01:44:51 26 4
gpt4 key购买 nike

我正在编写一项服务,该服务通过 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

那么我在这里做错了什么?

最佳答案

使用 Promise 的想法是链接“then”调用(或命令)。

为了做到这一点,一个 Promise 必须返回另一个 Promise 或一个值。

像这样:

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 bookingPromises = bookingCoworkerIdsUnique.map(coworkerId => apiService.getSingleCoworker(coworkerId));
return Promise.all(bookingPromises);

}).then(coworkers => {
console.log(coworkers.length);
console.log(coworkers[0]);
}).catch(err => {
// do something with error
});

在第一个“then”回调中,我返回 Promise.all,它生成一个 promise 。

下一个“then”通过“all” promise 接收所有已解析的值。

请记住,Promise 应始终在末尾包含“catch”调用,以便捕获 Promise 错误。

编辑:

getSingleCoworker(coworkerId) {
const self = this;
return new Promise(function(resolve, reject) {
httpsRequest.createRequest(self.URL.coworkerList + `?Coworker_Id=${coworkerId}`, {}, this.requestHeaders, 'GET')
.then(result => {
const jsonVal = JSON.parse(result).Records[0];
resolve(jsonVal);
}).catch(reject);
});
}

希望这有帮助

关于javascript - Promised API 调用不会执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51845089/

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