[创建电子商务聊天机器人时,我想搜索与用户购物车(其购物车中的产品(相关的信息,并将这些信息作为列表发送给信使。
我在下面的链接中写了一个函数,当测试时,我在messenger中没有返回任何元素就出现了这个错误。
调用发送API 400错误请求失败{消息:'(#194(param name_placeholder[elements]的元素太少。',类型:"OAuthException",代码:194,fbtrace_id:'AWTjz9pQlZ_kfwU-GHjq-mB'}
我认为问题在于,对发送消息的函数的调用是在搜索有关每个项的信息并附加MyArray之前执行的。
我如何解决这个问题以及功能有什么问题]1
简而言之,如果将forEach循环替换为for。。。在中,您将获得所需的结果。
for await (const item of items) {
// do your async stuff
}
forEach将遍历所有项,并为每个元素执行所提供的回调,但它不会等待promise或遵守async/await。它希望回调是同步的:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
因此,当您使用MyArray时,它将是空的——从forEach回调返回的promise将不会被解析。
*此外,最好始终在您的问题中包含上面评论中提到的代码。