赞 | 287 |
VIP | 11 |
好人卡 | 74 |
积分 | 226 |
经验 | 281171 |
最后登录 | 2024-11-18 |
在线时间 | 9415 小时 |
Lv5.捕梦者 (暗夜天使) 只有笨蛋才会看到
- 梦石
- 1
- 星屑
- 21646
- 在线时间
- 9415 小时
- 注册时间
- 2012-6-19
- 帖子
- 7118
|
本帖最后由 喵呜喵5 于 2020-8-23 18:38 编辑
“这么写 变量定义就得都写到sleep外面了。。。。”
啊?为啥?
- function sleep(time){
- return new Promise(function(resolve){
- setTimeout(resolve, time)
- })
- }
- function foo(){
- var bar = 12345
- console.log(123)
- sleep(1000)
- .then(function(){
- console.log(bar)
- console.log(456)
- })
- .then(function(){
- console.log(bar)
- return sleep(500)
- })
- .then(function(){
- console.log(bar)
- console.log(789)
- })
- }
- foo()
复制代码
“我写内方法也就是在异步方法里面有意义。。(好看和变量作用域)”
并不好看,除非你把 MV 整套重写成 async 的,否则就是个回调地狱
- function foo(){
- (async function() {
- await sleep(1000)
- console.log(123)
- (async function() {
- await sleep(1000)
- console.log(456)
- (async function() {
- await sleep(1000)
- console.log(789)
- })()
- })()
- })()
- }
复制代码
如果这个你觉得好看的话,那这个更好看
- setTimeout(function(){
- console.log(123)
- setTimeout(function(){
- console.log(456)
- setTimeout(function(){
- console.log(789)
- }, 1000)
- }, 1000)
- }, 1000)
复制代码
“还有针对两个但不跨整段的异常处理。。。这样也难写。。 搞成同步方法就没意义了。。”
大哥你这么用 aysnc 又不想要回调地狱,那异常处理就还是 promise 那套啊
- function foo(){
- console.log(123)
- sleep(1000)
- .then(function(){
- console.log(456)
- throw 666
- })
- .catch(function(e){
- console.error(`error:${e}`)
- })
- .then(function(){
- return sleep(500)
- })
- .catch(function(e){
- console.error(`error2:${e}`)
- })
- .then(function(){
- console.log(789)
- })
- .catch(function(e){
- console.error(`error3:${e}`)
- })
- }
复制代码
|
|