关于js异步的问题
- 是否一般的函数执行就可以说是阻塞的,同步执行的?比如:
const sync = function() {
let a = 1
let b = 2
let c = 3
}
也即是说,在这3行赋值语句执行完成之前,函数外所有的语句执行都是停滞的?
- 如果一个函数形似:
const sync2 = async function() {
var a = 0
a = await a_return_promise_function()// return 1
return a
}
现在需要在一个事件触发函数event
中调用sync2
,想要实现效果:
a. 在event中阻塞,保证event函数会按顺序执行,对event的返回值不做处理,不阻塞event外部。最好是把event改为async event,调用写成await sync2()吗?(在此期间用户仍可执行其他动作?)
是否在调用含有返回promise对象的函数时,将当前函数设为async是最佳做法?
event: async function() {
...
a = await sync2()
...
}
b. sync2会返回一个promise,那么如何改写或包装sync2,使得sync2异步返回a的值而不是promise对象?
event: function() {
...
var a = 0
a = new_sync2()
console.log(a)// will be 0
...
}
c. sync2会返回一个promise,那么如何改写或包装sync2,使得sync2会同步执行,也就是效果等同于上文函数sync的执行?(在此期间用户不可执行其他动作?)
如果我想做到:
1. 像普通同步函数一样执行
2. 不阻塞外部执行
是否是无法做到的?
event: function() {
...
var a = 0
a = new_sync2()
console.log(a)// will be 1
...
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
a.就这样写
b.
c.不能