gpt4 book ai didi

使用函数式编程和异步的 JavaScript while 循环

转载 作者:行者123 更新时间:2023-12-01 01:52:28 25 4
gpt4 key购买 nike

我正在尝试找出一种使用函数式编程编写以下代码的方法。

let member_found = [];

// going through 50 or more pagination until 5 are found.
while(member_found.length < 5)
{
let member = findMember(/* calls selenium commands to visit next page */);
if(member != undefined)
member_found.push(member);
}

console.log(member_found) // expecting 5 values but actual is 0.

目前,由于 js 的非阻塞特性,代码会进入无限循环。

最佳答案

您可以包装 findMember 以返回 promise ,然后您可以使用 ES6 async\await 功能:)

假设您有findMember(cb)所以就会这样

function promiseFindMember() {
return new Promise((res, rej) => findMember(member => res(member)))
}

这样您就可以编写如下函数

function async foo() {
let members = []
while(member_found > 5) {
let member = await promiseFindMember()
if(member !== undefined) {
members.push(member)
}
}
}

我还添加了一个例子来捕捉这个概念并比较不同的想法:)

function dummyCb(cb){
console.log("Dummy run!")
setTimeout(cb, 1000)
}

function promiseDummyCb(){
return new Promise((res, rej) => dummyCb(() => res()))
}


async function async_hello() {
cb_count = 0
while(cb_count < 5) {
await promiseDummyCb()
cb_count += 1
}
}

async function hello() {
cb_count = 0
while(cb_count < 5) {
dummyCb()
cb_count += 1
}
}



hello()

关于使用函数式编程和异步的 JavaScript while 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51351731/

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