写出三种js处理异步的方法 js为什么不能在同步函数里调用异步函数?

[更新]
·
·
分类:互联网
4613 阅读

写出三种js处理异步的方法

js为什么不能在同步函数里调用异步函数?

js为什么不能在同步函数里调用异步函数?

因为同步函数需要上一个函数执行的结果作为下一个函数的参数才能进行,而异步函数之间有时间的延时。

promise是同步执行还是异步执行?

同步的话,必须这个操作完了才会执行下一步,在等待期间浏览器会挂起不能执行任何接下来的js代码;异步则是【告诉】浏览器去做,【告诉】是一瞬间的事情,然后就继续执行下一步了,等到结果返回来了,浏览器会通知js执行相应的回调。

thinkjs异步的结果怎么输出?

数据或的获取与处理应该放在一起,不要依赖 vue 的生命周期去控制,当你这么做的时候,实际上是破坏了数据处理的完整性(获取-处理),那如果获取失败了呢,你的异常处理又要放在哪?你的mounted里是不是又要处理一遍获取失败的情况。
获取数据以及处理数据的逻辑放在methods里,例如封装成一个 updateDataList: function(){},
然后在mounted,以及其他“update”事件里调用 updateDataList。保证数据操作的完整性。
updateDataList 方法也可以单独抽离成一个文件,也可以把异步请求单独抽离到XXapi.js文件中
补充
用 vue 就不应该有模拟服务端渲染(先获取数据再组装页面)的想法,没有必要不是么!
不要将自己的逻辑拆分到生命周期中,生命周期不干这事,异步获取数据应该看成update阶段,而不是created阶段的操作

node.js中的forEach是同步还是异步?

node里几乎所有用到回调函数的地方,都是异步的,回调函数后面的代码很可能比回调函数中的代码后先执行,特别是数据库操作。当然,node也提供了同步版本的函数,例如文件操作,()是()的同步版本。那么问题来了,forEach()是不是异步的呢?按理说,没有加Sync,应该是异步的呀。复制代码 代码如下: var arr [#39a#39, #39b#39, #39c#39]
var str #39123#39
(function(item) { str item while (true) {} //用一个死循环,卡死它~~ })
console.log(str)运行上面的代码,结果它就这么卡死了,没有任何输出。。
所以说,node里的forEach()是同步的!!
第一次用node的时候,没有考虑过这个问题,按同步的写了,写突然想到,测试后虚惊一场,以为以前的代码都写错了。