gpt4 book ai didi

node.js - 在异步竞赛中使用第一个结果/胜者为王

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

基本上,我想让两个异步调用相互竞争,并且只使用获胜者。

我似乎不知道如何做到这一点,只知道如何防止它。远程可能吗?

蹩脚的伪代码:

//rigging a race
function MysqlUser()
{
setTimeout(function(){
return "mysqluser";
}, 500);
}

function ADUser()
{
setTimeout(function(){
return "aduser";
}, 1000);
}

function getUser()
{
var user = null;
user = ADBind();
user = MysqlBind();
//if user != null
return user;
//else?
}

我希望(在本例中)MysqlUser 胜过 ADUser。

如有任何帮助,我们将不胜感激。

最佳答案

您可以编写一个简单的 first 函数,该函数获取任务列表并回调仅第一个完成的结果:

function first(tasks, cb) {
var done = false;
tasks.forEach(function(task) {
task(function(result) {
if(done) return;
done = true;
cb(result);
});
});
}

然后:

function mysqlUser(cb) {
setTimeout(function() {
cb("mysqluser");
}, 500);
}

function adUser(cb) {
setTimeout(function() {
cb("aduser");
}, 1000);
}


first([mysqlUser, adUser], function(user) {
console.log(user);
});

如果您想应对两个操作都失败的情况,这可能需要更多考虑。

关于node.js - 在异步竞赛中使用第一个结果/胜者为王,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16842691/

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