javascript - 需要一个异步函数,在另一个函数中运行,返回一个布尔值而不是一个承诺
问题描述
我正在尝试使用模块https://gmousse.gitbooks.io/dataframe-js/content/doc/api/dataframe.html#chainchain
中的函数,并使用 NodeJS。dataframe-js
文档说明If a function returns boolean, it's a filter.
这是我想要的。我需要我的一条过滤器行来异步运行,因为部分逻辑需要对它将尝试匹配的数据进行 API 调用。
我希望我的链条看起来像这样:
let filteredDf = df.chain(
row => ![null, '<SLID>'].includes(row.get('SERVICE_ACCT_NBR')), // this works fine
async row => {
const account = row.get('ACCOUNT')
const manager_chain = await getManagersChain(account) // API call, returns an array of managerIds
returns (['6G0001', '330002'].some(managerId => manager_chain.includes(managerId)))
}
)
需要保留至少包含这两个 managerId 之一的帐户
最终发生的是异步函数给出了一个 Promise,它被视为true
与实际值无关。
我开始了一个空白测试文件,试图找出如何返回一个布尔值,但我找不到解决方案:
const DataFrame = require('dataframe-js').DataFrame;
let df2 = new DataFrame([
{col1: '1', col2: '1a'},
{col1: '2', col2: '2a'},
{col1: '3', col2: '3a'}
], ['col1', 'col2'])
// non-async get [3,2]
console.log(df2.chain(
row => true
).dim())
// non-async get [0,2]
console.log(df2.chain(
row => false
).dim())
// expected [0,2] for both but got [3,2]
console.log(df2.chain(
async row => false
).dim())
console.log(df2.chain(
row => (async () => false)()
).dim())
我怎样才能让异步函数返回一个布尔值,以便我可以在其中运行等待?
解决方案
推荐阅读
- makefile - 如何在 GNU make 中创建回退规则?
- java - 流的包容性 takeWhile()
- mongodb - 在mongodb中将float64数组减少为float32
- android - FragmentNavigator 为透明背景添加片段而不是替换
- asp.net - asp.net 验证不适用于用户控件内的验证组
- html - 如何使用超链接图像修复页脚移动
- sql-server - 在sql存储过程中查找创建日期和更新日期之间的最新日期
- mysql - 错误:无法添加或更新子行:外键约束失败
- c++ - 使用 Qt 4.8 在 QDockWidget 中添加的 QVBoxLayout 中重新定位小部件
- youtube-api - Google Cloud / API:通过多个项目规避配额