Ela*_*atz 4 javascript asynchronous promise
JS中的Prom允许您进行异步编程,如下所示:
DoSomething().then(success, failure);
DoSomethingElse();
Run Code Online (Sandbox Code Playgroud)
每当我写完之前的代码,它就会到达DoSomethingElse()之前success.怎么可能?JS不是单线程环境(不包括Web工作者)吗?它完成了setTimeout吗?
是的,JavaScript是单线程的,这意味着你永远不应该阻止这个单线程.任何长时间运行的等待操作(通常是AJAX调用或休眠/暂停)都是使用回调实现的.
不看这里的实现是怎么回事:
DoSomething被调用,它接收success并failure充当参数.
它完成它需要做的事情(可能启动长时间运行的AJAX调用)并返回
DoSomethingElse() 叫做
...
一段时间后,AJAX响应到来了.它调用先前定义的success和failure函数
| 归档时间: |
|
| 查看次数: |
2751 次 |
| 最近记录: |