我正在使用Botpress来处理此问题,但是由于要将Promises和Await / Async结合在一起,因此我犯了一些基本的Javascript错误。任何有关纠正此问题的帮助都将令人惊奇
这是我的代码
const knex = await bp.db.get();
const userIds = await knex('_students').distinct('id').pluck('id');
return Promise.all(
userIds.map((userId) => {
return await bp.dialogEngine.jumpTo(userId, 'question.flow.json')
}
)
);
这是我得到的错误:
SyntaxError: await is only valid in async function
如何使代码在return语句中与等待中的代码一起工作,因为我需要根据Botpress API
答案 0 :(得分:1)
您可以添加x
,如下所示:
async
但是,您可以直接从async (userid) => {...}`
^
使用Promise
,然后返回jumpTo(...)
Promise.all(...)
答案 1 :(得分:1)
您无需在此处使用JavaPairRDD<String, Iterable<String>> links = lines.mapToPair(s -> {
String[] parts = COLONS.split(s);
String[] outGoingLinks = SPACES.split(parts[1]);
return new Tuple2<>(parts[0], parts[1]);
}).distinct().groupByKey().cache();
await
只需返回一个promise数组,您将在从const knex = await bp.db.get();
const userIds = await knex('_students').distinct('id').pluck('id');
return Promise.all(
userIds.map((userId) => {
return bp.dialogEngine.jumpTo(userId, 'question.flow.json')
}
)
);
解析的数组中获得一个解析的值。
答案 2 :(得分:0)
await有效,或者您只能与async函数一起使用。记住,异步总是返回一个promise,等待解决这个promise并提取值。为此,您需要将代码包装在异步函数中,例如
const async_await_promise = async function(){
const knex = await bp.db.get();
const userIds = await knex('_students').distinct('id').pluck('id');
return await Promise.all(
userIds.map((userId) => {
return await bp.dialogEngine.jumpTo(userId, 'question.flow.json')
}))
}
async_await_promise ();