async异步parallel的方法执行多个函数时,返回的results的数组,后两个有时有,有时又没有
发布于 8 年前 作者 panyunyi 3748 次浏览 来自 问答

QQ图片20170109112139.png promise2和promise3的返回结果有时有一个,有时两个都有,或者两个都没有。 async不是等待函数执行完再返回的吗?

9 回复

untitled1.png untitled2.png 我执行了3次打印了一下,有时返回结果的函数在promise2和promise3执行完之前。

具体要看promise1 ,2,3 这3个函数你是 怎么写的了、 parallel 第一个参数是 异步执行的函数集合, 第二个参数是 回调,等待三个promise异步方法执行完事 触发 callback回调事件。

你要有setTimeout 其实promise异步方法已经完事,只是结果返回的是空,你运行的东西有可能在setTimeout延时任务轮询中了。不一定是这个原因。我只是举个例子,你最好贴贴promise等方法的code

如果有setTimeout 执行了其中的promise任务,那就不一定是什么情况了,补充上一个回复

@slclub untitled1.png untitled2.png 谢谢你!麻烦帮我看一下,是不是我哪里写错了。

我也没看到有什么错的地方; parallet callback 触发是在最后一次的callback触发执行的,它是用的循环触发每次触发都检查,是否全部异步事件完成。完成就执行callback事件。是在最后一次异步任务emit (trigger) callback那一刻执行的callback。

和你的promise异步事件执行是否完成没有关系

如果result返回的是需要的,数据没有问题。那么程序因该就没有什么问题了。

untitled1.png 太粗心了啊!!!在promise1中的callback回调参数漏写了第一个参数啊!!

哈哈,procmise1的一个 callback1(null,data)少写了个参数,耽误了3个小时哦

尽量不要用var 声明变量,尽量hi使用 let和const const 好过let 好过var 能用const就用const 不用后两个, var尽量就不要用了

const是声明 不可修改的 常量的意思

回到顶部