gpt4 book ai didi

javascript - 自动回调阶梯创建器

转载 作者:行者123 更新时间:2023-11-30 17:10:34 25 4
gpt4 key购买 nike

假设我们有这两个异步函数:

function myfu(f) {
setTimeout(function(){ f(true) }, 200)
}

function myfu2(x, f) {
setTimeout(function(){ f(500 + x) }, 200)
}

我在想这个语法:

if (myfu.()) {
var d = myfu2.(55)
console.log(d) // outputs 555
}

输入和阅读起来非常简单:

myfu(function (DOTCALL1) {
if (DOTCALL1) {
myfu2(55, function (DOTCALL2) {
d = DOTCALL2
console.log(d) // outputs 555
})
}
})

.( 语法的转换可以通过搜索/替换/正则表达式轻松实现。

我注意到大部分时间我的异步函数的结果没有被使用,调用之后,上层函数也立即退出。

尽管有时上层函数在调用第一个 async(callback) 之后可以做一些事情,但通常它什么都不做。有时异步函数可能会返回一些有用的东西,但大多数时候它只是返回 undefined 并且真正的东西是通过 callback(result) 返回的。

所以我想也许我可以修改代码,使其更易于键入和阅读。上面的例子说明了这一点。

我的问题很简单:是否已经有类似的解决方案?我不想重新发明轮子(如果已经发明的话)。或者,如果没有这样的项目,为什么不,为什么不使用这种看起来很容易实现并且应该可以显着简化开发的方法?

请不要回应“看看 async.js”的建议。我不是在问异步编程模式,一般的异步编程,不是箭头函数符号 =>,不是 coffeScript。我问的是文本级别的代码转换,从建议的原始语法形式到众所周知的异步阶梯,也称为“回调 hell ”符号。

最佳答案

您所描述的与 streamline.js 非常相似:https://github.com/Sage/streamlinejs .

它是我写的,但我是从 narrative.js 得到灵感的:参见 http://www.neilmix.com/narrativejs/doc/

所以你的直觉是对的。这是可以做到的。尽管如此,它还是比一些搜索/替换/正则表达式操作复杂一点,至少如果您想超越显而易见的范围并支持所有 JavaScript 结构中的异步调用。例如,尝试重写:

while (asyncF1.() && asyncF2.()) asyncF3.();

我在博文中描述了流线变换算法:https://bjouhier.wordpress.com/2011/05/24/yield-resume-vs-asynchronous-callbacks/

关于javascript - 自动回调阶梯创建器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27102432/

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