多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
**函数返回值** * * * * * 使用一个函数的输出作为另一个函数的输入是很常见的,在同步方式下一般按以下方式编写代码: ``` var result = fn2(fn1("fn1的参数")) ``` 使用 `fn1` 的输出作为 `fn2` 的输入,得到最后结果。 * * * * * 而在异步方式下,由于函数执行结果不是通过返回值,而是通过回调函数传递,因此一般按以下方式编写代码: ``` fn1("fn1的参数", function (output1) { // output1 是 fn1 的实现里通过调用回调函数传入的参数 fn2(output1, function (output2) { // 同理这里要做的是对 output2 的处理 }) }) ``` 一个简单的 `fn1` 和 `fn2` 的实现如下: ``` function fn1(param, callback) { // 处理param, 然后可以通过同步或者异步的方式 // 调用callback, 然后把结果传入回调函数 // 同步, 直接调用callback就行了 callback(param) // 异步, 通过异步API调用callback setTimeout(function () { callback(param) }, 1000) } ``` * * * * * **可以看到,这种方式其实就是一个回调函数套一个回调函数,套得太多很容易写出 `>` 形状的代码。**