据我所知,promise是可以解析()或拒绝()的东西,但我惊讶地发现,promise中的代码在调用解析或拒绝后仍继续执行。
我认为resolve或reject是exit或return的异步友好版本,它将停止所有立即的函数执行。
有人能解释一下为什么下面的示例有时在解析调用后显示console.log的背后思想吗:
var call = function() {
return new Promise(function(resolve, reject) {
resolve();
console.log("Doing more stuff, should not be visible after a resolve!");
});
};
call().then(function() {
console.log("resolved");
});
杰斯宾
resolve()
函数与return
完全不同。它只是表示用then()
方法注册的回调函数的参数现在已准备就绪,回调函数可能会离开作业队列(或微任务队列)并进入主JS调用堆栈,但是,只有当所有同步代码和异步代码在队列结束运行之前进入队列时,才会发生这种情况console.log(“在返回语句后不执行更多操作”)
代码中的此语句是同步代码,它具有优先级或异步代码。这就是为什么它首先运行
规范仍然要求异步调用解析
promise时调用的回调。这是为了确保在混合使用同步和异步操作的promise时的一致行为。
因此,当您调用解决
时,回调将排队,并且函数执行将立即继续执行解决()
调用之后的任何代码。
只有当JS事件循环获得控制权后,才能从队列中删除回调并实际调用。
JavaScript具有“运行到完成”的概念。除非抛出错误,否则函数将一直执行,直到到达return
语句或其结束。函数之外的其他代码不能对此进行干扰(除非再次抛出错误)。
如果你想退出初始化函数,你必须在它前面加上:
return new Promise(function(resolve, reject) {
return resolve();
console.log("Not doing more stuff after a return statement");
});
我正在运行以下代码,试图删除不存在的“尖叫”: 控制台日志显示以下内容: 我希望函数在404响应时停止执行,但似乎块都是在block之外执行的。为什么会这样?
在一些请求中,我们会做一些日志的推送、用户数据的统计等和返回给终端数据无关的操作。而这些操作,即使你用异步非阻塞的方式,在终端看来,也是会影响速度的。这个和我们的原则:终端请求,需要用最快的速度返回给终端,是冲突的。 这时候,最理想的是,获取完给终端返回的数据后,就断开连接,后面的日志和统计等动作,在断开连接后,后台继续完成即可。 怎么做到呢?我们先看其中的一种方法: local response
问题内容: 我正在尝试引发异常(不使用try catch块),并且程序在引发异常后立即完成。有没有一种方法可以在我引发异常之后继续执行程序?我抛出了在另一个类中定义的InvalidEmployeeTypeException,但是我希望程序在抛出该异常后继续执行。 问题答案: 试试这个:
本文向大家介绍深入剖析浏览器退出之后php还会继续执行么,包括了深入剖析浏览器退出之后php还会继续执行么的使用技巧和注意事项,需要的朋友参考一下 前提:这里说的是典型的lnmp结构,nginx+php-fpm的模式 如果我有个php程序执行地非常慢,甚至于在代码中sleep(),然后浏览器连接上服务的时候,会启动一个php-fpm进程,但是这个时候,如果浏览器关闭了,那么请问,这个时候服务端的这
C# 用try catch包起来执行后继续报错 尝试过异步但效果不太好