首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.then()回调中的` return `是从内部作用域还是外部作用域返回的?

在.then()回调中,return语句是从内部作用域返回的。

在Promise的.then()方法中,回调函数会在Promise对象的状态变为resolved时被调用。回调函数中的return语句用于指定Promise对象的返回值。当return语句执行时,它会从内部作用域中返回一个值,并将该值作为下一个.then()方法的参数。

由于Promise的回调函数是异步执行的,它们会在主线程执行完毕后才被调用。因此,return语句是在回调函数内部作用域中执行的,返回的值也是从内部作用域返回的。

在实际应用中,可以根据具体的业务需求,在.then()回调中使用return语句返回需要的值,以便后续的Promise链式调用或其他处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

异步与回调函数的作用域链

异步与回调/函数的作用域链 JavaScript 只在一个线程上运行,JavaScript 同时只能执行一个任务,其他任务都必须在后面排队等待。...JavaScript 语言本身并不慢,慢的是读写外部数据,比如等待 Ajax 请求返回结果。这个时候,如果对方服务器迟迟没有响应,或者网络不通畅,就会导致脚本的长时间停滞。...如果是同步任务,主线程就等着 Ajax 操作返回结果,再往下执行;如果是异步任务,主线程在发出 Ajax 请求以后,就直接往下执行,等到 Ajax 操作有了结果,主线程再执行对应的回调函数。...所以$.ajax()返回的结果是一个承诺,不是结果,因为结果还没有到来 使用回调函数 使用回调要用这样的形式 fn(参数1,参数2,()=>{ 回调函数(xxx,xxx,()=>{}) }) 不要用...fn3 } var fn = fn1() fn() //undefined 解密 函数在执行的过程中,先从自己内部找变量 如果找不到,再从创建当前函数所在的作用域去找, 以此往上 注意找的是变量的当前的状态

1.8K40

Vue style里面使用@import引入外部css, 作用域是全局的解决方案

问题描述 使用@import引入外部css,作用域却是全局的 export default { name...Add “scoped” attribute to limit CSS to this component only 这句话大家应该是见多了, 我也使用scoped, 但是使用@import引入外部样式表作用域依然是全局的...,看了一遍@import的规则后, 进行初步猜测,难道是@import引入外部样式表错过了scoped style?...又回想到此前看过的前端性能优化文章里面都有提到,在生产环境中不要使用@import引入css,因为在请求到的css中含有@import引入css的话,会发起请求把@import的css引进来,多次请求浪费不必要的资源.../static/css/user.css"; 我们只需把@import改成引入外部样式,就可以解决样式是全局的问题 <style scoped

98110
  • Vue style里面使用@import引入外部css, 作用域是全局的解决方案

    问题描述 使用@import引入外部css,作用域却是全局的 export default { name...style> Add “scoped” attribute to limit CSS to this component only 这句话大家应该是见多了, 我也使用scoped, 但是使用@import引入外部样式表作用域依然是全局的...,看了一遍@import的规则后, 进行初步猜测,难道是@import引入外部样式表错过了scoped style?...又回想到此前看过的前端性能优化文章里面都有提到,在生产环境中不要使用@import引入css,因为在请求到的css中含有@import引入css的话,会发起请求把@import的css引进来,多次请求浪费不必要的资源.../static/css/user.css"; 我们只需把@import改成引入外部样式,就可以解决样式是全局的问题 <style scoped

    1.4K30

    你知道Python中的4种变量作用域是哪些吗?

    01 作用域 ---- Python的作用域可以分为四种: L(Local) 局部作用域 E(Enclosing) 闭包函数外的函数中 G(Global) 全局作用域...B(Built-in) 内建作用域 变量/函数 的查找顺序: L –> E –> G –>B 意思是,在局部找不到的,便去局部外的局部作用域找(例如 闭包),再找不到的就去全局作业域里找,再找不到就去内建作业域中找...在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包。其实装饰函数,很多都是闭包。...但是闭包是一种特殊情况,如果外函数在结束的时候发现有自己的临时变量将来会在内部函数中用到,就把这个临时变量绑定给了内部函数,然后自己再结束。 你可以看下面这段代码,就构成了闭包。...关键字:global 将 局部变量 变为全局变量 关键字:nonlocal 可以在闭包函数中,引用并使用闭包外部函数的变量(非全局的噢) global好理解,这里只讲下nonlocal。

    2.2K10

    【半译】在ASP.NET Core中创建内部使用作用域服务的Quartz.NET宿主服务

    ; return Task.CompletedTask; } } 我们还有一个IJobFactory的实现,以便我们在需要时从DI容器中检索作业的实例: public class...权宜之计 我在上一篇文章中展示的解决方案是将IServiceProvider注入到您的IJob的文档中,手动创建一个范围,并从中检索必要的服务。...作业可以直接使用作用域服务 由于作业实例是从IServiceProvder作用域中解析来的,因此您可以在作业实现的构造函数中安全地使用作用域服务。...实现与上一个非常相似,但是在执行的我们请求的IJob之前,我们从DI容器中解析了DbContext和消息总线服务。...该QuartzJobRunner通过创建和处理作用域隐式地处理这个问题。 但是,此处显示的方法并不是在工作中使用范围服务的唯一方法。

    1.9K10

    深入理解JavaScript闭包之什么是闭包

    ,其中不同的地方就是在于内部函数 bar 在执行前,从外部函数返回。...首先解释5是从哪里来的,这个循环的终止条件是 i 不再 的值是5,因此,输出显示的是循环结束时 i 的最终值。 延迟函数的回调会在循环结束时才执行。...事实上,当定时器运行时即使每个迭代中执行的都是 setTimeout(.., 0),所有的回调函数依然是在循环结束后才会被执行。因此每次输出一个 5来。...这样修改之后,在每次迭代内使用 IIFE(立即执行函数)会为每个迭代都生成一个新的作用域,使得延迟函数的回调可以将新的作用域封闭在每个迭代内部,每个迭代内部都会含有一个具有正确值的变量可以访问。...为什么总是 JavaScript 中闭包的应用都有着关键词 “return”, javaScript 秘密花园 中有一段话解释到:闭包是JavaScript 一个非常重要的特性,这意味着当前作用域总是能够访问外部作用域的变量

    84830

    JavaScript闭包

    JavaScript闭包 函数和对其词法环境lexical environment的引用捆绑在一起构成闭包,也就是说,闭包可以让你从内部函数访问外部函数作用域。...在本质上,闭包是将函数内部和函数外部连接起来的桥梁。 定义闭包 为了定义一个闭包,首先需要一个函数来套一个匿名函数。...闭包是需要使用局部变量的,定义使用全局变量就失去了使用闭包的意义,最外层定义的函数可实现局部作用域从而定义局部变量,函数外部无法直接访问内部定义的变量。...callback函数与其词法环境构成了闭包,其词法环境中存在的变量localVal = 1在函数callback作为回调函数传递时并没有被立即释放,而可以在回调执行时继续使用,这就是闭包为回调机制提供了支持...(coun[i]()); // 3 3 3 } 可以看到运行输出是3 3 3,而并不是期望的0 1 2,原因是这三个闭包在循环中被创建的时候,共享了同一个词法作用域,这个作用域由于存在一个i由var声明

    1.1K00

    定义闭包

    JavaScript闭包 函数和对其词法环境lexical environment的引用捆绑在一起构成闭包,也就是说,闭包可以让你从内部函数访问外部函数作用域。...在本质上,闭包是将函数内部和函数外部连接起来的桥梁。 定义闭包 为了定义一个闭包,首先需要一个函数来套一个匿名函数。...闭包是需要使用局部变量的,定义使用全局变量就失去了使用闭包的意义,最外层定义的函数可实现局部作用域从而定义局部变量,函数外部无法直接访问内部定义的变量。...callback函数与其词法环境构成了闭包,其词法环境中存在的变量localVal = 1在函数callback作为回调函数传递时并没有被立即释放,而可以在回调执行时继续使用,这就是闭包为回调机制提供了支持...(coun[i]()); // 3 3 3 } 可以看到运行输出是3 3 3,而并不是期望的0 1 2,原因是这三个闭包在循环中被创建的时候,共享了同一个词法作用域,这个作用域由于存在一个i由var声明

    25310

    搞懂JavaScript引擎运行原理

    作用域及作用域链 在前面的示例中,所有内容都是全局作用域的,这意味着我们可以从代码中的任何位置访问它。 现在,介绍下私有作用域以及如何定义作用域。...由于函数c本身没有变量myVar,所以它它通过作用域链向上找,也就是函数b,因为myVar是函数b内部声明过。 下面是执行示意图: ? 请记住,外部引用是单向的,它不是双向关系。...对于块作用域的变量,它的行为类似于函数,注意var b可以在外部访问,但是const blockedVar不能。 在块内部,从作用域链向上找到 a 并将let a更改为9000。...简单的闭包 这个例子中 有一个返回函数的函数,并在返回的函数中使用外部的变量, 这称为闭包。...,所以回调函数实际是两秒后才会执行,这是JavaScript应用程序中的常见错误。

    87720

    再谈JS闭包

    块级作用域 不同的作用域能够拥有同名的变量 外部作用域的变量可以在内部作用域中访问 JS通过「词法作用域」(静态作用域)来实现变量查询机制 「闭包(closure)是一个函数」:其有权访问其词法作用域内部的变量即使该函数在词法作用域外部被调用...Event handler(事件处理器) 2. callback(回调函数) 3....❝外部作用域的变量可以在内部作用域中访问 ❞ 一图胜千言 从上面的示例中我们可以得出两个结论 作用域可以嵌套 外部作用域的变量可以在内部作用域中访问 3....一图胜千言 我们可以得出如下结论 ❝「闭包(closure)是一个函数」:其有权访问其词法作用域内部的变量即使该函数在词法作用域外部被调用 ❞ 更简单的讲:闭包是一个函数,它会从定义它的地方记住变量,...5.2 Callbacks 在回调函数中,也存在变量捕获的情况。例如:setTimeout的回调函数 const message = 'Hello, World!'

    2.8K30

    JavaScript(高级)

    作用域链 理解 多个上下级关系的作用域形成的链, 它的方向是从下向上的(从内到外) 查找变量时就是沿着作用域链来查找的 查找一个变量的查找规则 在当前作用域下的执行上下文中查找对应的属性, 如果有直接返回...函数嵌套 内部函数引用了外部函数的数据(变量/函数), 执行函数定义就会产生闭包(不用调用内部函数) 调用外部函数 闭包的作用: 使用函数内部的变量在函数执行完后, 仍然存活在内存中(延长了局部变量的生命周期...一般是不存在, 存在于闭中的变量才可能存在 在函数外部能直接访问函数内部的局部变量吗?...setTimeout()的回调函数是在主线程执行的 定时器回调函数只有在运行栈中的代码全部执行完后才有可能执行 为什么js要用单线程模式, 而不用多线程模式?...使用: 主线程 // 创建一个Worker对象并向它传递将在新线程中执行的脚本的URL var worker = new Worker('worker.js'); // 绑定用来接收分线程返回的数据的回调

    90120

    一文讲透JavaScript闭包与立即执行函数表达式(IIFE)

    这是因为setTimeout的回调函数是在循环结束后才执行的,此时i已经变成了6,所以无论定时器运行多长时间,都会输出6。要解决这个问题,可以利用闭包来创建一个新的作用域,捕获每次循环的变量值。...每次循环时,都会创建一个新的作用域,保留了当前循环的变量值。这样,每个setTimeout回调函数都捕获了对应的j值,从而实现了按照预期顺序输出1、2、3、4、5。...这样做的好处是可以在函数内部定义变量和函数,而不会对外部的全局作用域造成污染。...在传统的for循环中,由于JavaScript中只有函数作用域和全局作用域,没有块级作用域,所以在循环体内部定义的变量会被循环体外部的代码共享,可能导致意想不到的结果。...在IIFE的内部,我们使用j来接收传入的参数i,这样就创建了一个函数作用域内部的变量j,它与外部的循环变量i是相互独立的。

    1.2K41

    【Vue原理】VModel - 白话版

    } 更新内部数据流程 1、当事件触发的时候,会把 表单的值 赋值给 name 2、name 是从 组件实例上访问的 3、所以这次赋值会 直接改变组件实例的 name 回调怎么赋值给组件实例的name...一开始不懂,所以不理解,也没查到,写了个例子,大概理解了意思 1、因为事件回调 在 with 里面声明 2、于是事件回调的 作用域链最顶层 就加上了一层 with 绑定的作用域 3、就算事件回调不在...with 中执行,事件回调中的 变量访问,也会先访问之前 with 绑定过的作用域,因为作用域链的最顶层 with举栗子 var name=22 var a={name:"a"} with(a){...行了,给你看结果了 [image] 好吧,再一次深刻认识到一个知识点,with 绑定作用域原来这么强,离开with执行,还是先访问他的作用域,脱离不出魔爪啊,强盗作用域 [image] 回来总结!...于是当事件回调执行的时候,会 直接赋值 给 组件实例的name,这样便通过外部改变了内部数据 TIP 外部变化,本来可能会存在一种情况 a、手动修改表单后, 回调内会更新组件的值 b、组件的值更新之后,

    1K40

    JS_基础知识点精讲

    ❝在词法环境内部,维护了一个「小型栈结构」,栈底是函数最外层的变量,进入一个作用域块后,就会把该作用域块内部的变量压到栈顶。当作用域执行完成之后,该作用域的信息就会「从栈顶弹出」。...当通过「调用」一个外部函数「返回」一个内部函数后,即使该外部函数已经执行结束了。但是「内部函数引用外部函数的变量依然保存在内存中」,就把这些「变量的集合称为闭包」。...」,内部函数 getName 和 setName 总是可以访问它们的外部函数 test 中的变量 在执行test时,调用栈的情况 test 函数执行完成之后,其执行上下文「从栈顶弹出」了 但是由于返回...❞ 当我们查找一个变量的值时, 首先在当前环境中搜索它的名称,如果当前环境没有; 然后在外部环境中搜索,外部环境也没有; 然后在外部环境的外部环境中搜索,一直搜到全局作用域, 如果全局作用域也没有该变量...从回调函数被放入Event Table后5秒钟,Event Table把firstFucntion移到Event Queue中。

    1.1K10

    前端面试题合集

    2、如果不设置回调函数,Promise内部抛出的错误,不会反应到外部。3、当处于Pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)。...图片因为通常情况下,函数内部变量是无法在外部访问的(即全局变量和局部变量的区别),因此使用闭包的作用,就具备实现了能在外部访问某个函数内部变量的功能,让这些内部变量的值始终可以保存在内存中。...但是通过闭包,我们最后还是可以拿到 a 变量的值闭包有两个常用的用途闭包的第一个用途是使我们在函数外部能够访问到函数内部的变量。...当然这个理解是建立的 Chrome 的表现之上的,在不同的浏览器上因为引擎的不同,可能存储的方式还是有所变化的。闭包产生的原因我们在前面介绍了作用域的概念,那么你还需要明白作用域链的基本概念。...(a);//3 }}从中可以看出,fun1 函数的作用域指向全局作用域(window)和它自己本身;fun2 函数的作用域指向全局作用域 (window)、fun1 和它本身;而作用域是从最底层向上找

    79820

    【JavaScript】 进阶教程 施工中~

    理解 多个上下级关系的作用域形成的链,他的方向是从下向上的(从内到外) 查找变量时就是沿着作用域链来查找的 查找一个变量的查找规则 在当前作用域下的执行上下文中查找对应的属性,如果有直接返回,否则进入...当一个嵌套的内部(子)函数引用了嵌套外部(父)函数的变量(函数)时,就产生了闭包 闭包到底是什么? 闭包是嵌套的内部函数包含被引用外部变量(函数)的对象 产生闭包的条件?...JS是单线程运行的 ​ 但是通过H5中的Web Wokers可以多线程运行 浏览器运行时多线程还是单线程? ​ 多线程 浏览器运行时单进程还是多进程? ​...setTimeout()的回调函数是在主线程执行的 定时器回到函数只有在运行栈中的代码全部执行完后才有可能执行 2、为什么js要用单线程模式,而不是多线程模式?...执行初始化代码,将事件回调函数交给对应模块管理 当事件发送时,管理模块会将函数及其数据添加到回调队列中 只有当初始化代码执行完后(可能要一定时间),才会遍历读取回调队列中的回调函数执行 <button

    1.4K30

    深入探讨JavaScript函数

    本文将深入探讨JavaScript函数的各个方面,包括函数的定义、参数传递、作用域、闭包、回调函数等,以帮助您更好地理解和利用JavaScript中的函数。...作用域和闭包JavaScript中的函数作用域和闭包是理解函数行为的关键概念。作用域定义了变量的可见性,而闭包允许函数访问其外部作用域的变量。1....作用域JavaScript中有两种作用域:全局作用域和局部作用域。全局作用域包含全局变量,而局部作用域包含在函数内部声明的变量。...闭包闭包是指一个函数可以访问其定义外部作用域的变量,即使在该外部作用域已经结束执行。这使得函数能够“记住”在其创建时可访问的变量。...闭包闭包是指函数可以访问其定义外部作用域的变量。这使得函数可以保留对外部变量的引用,即使外部作用域已经结束执行。

    32652

    关于闭包

    ....然而在这个过程..有一种临时变量是无法被垃圾回收的...当A函数中有一个内部函数a时.a函数内引用了A中定义的临时变量...并且a函数在A函数执行完后..仍然可以被外部访问到时...被a函数所引用的临时变量就无法被当成垃圾等待垃圾回收...闭包在定义时产生的...           闭包并非是在定义时产生的...而是在内部函数可被外部访问到时才会产生...     3。 闭包很强大..用的越多就越牛A(==!)          ...不否认闭包很强大.....但是并非用的越多就是越好的...使用闭包..会造成调试困难..所以要习惯做标识..另外...使用闭包会涉及到 增长函数作用域的 造成内部函数访问全局变量变慢的问题...    ...而上面讲闭包的使用场景时 其中有一条就是事件回调函数 当一个事件回调函数位于一个作用域内的时候...作用域执行外后 由于回调函数并未马上执行..而是等到相应事件触发时才执行...当回调函数依赖该作用域内的临时变量时......导致该作用域内部使用的临时变量无法马上被当垃圾回收(意味着该临时变量不会消失)     目前我们拥有一个事件回调函数 要做的就是需要让这个事件回调函数位于一个函数作用域内     代码: for

    2K20

    web前端面试都问什么-JS篇

    稍全面的回答: 在js中变量的作用域属于函数作用域, 在函数执行完后,作用域就会被清理,内存也会随之被回收,但是由于闭包函数是建立在函数内部的子函数, 由于其可访问上级作用域,即使上级函数执行完, 作用域也不会随之销毁...这里涉及到对函数作用域的认识: js变量分为全局变量和局部变量;函数内部可以直接读取全局变量,而在函数外部自然无法读取函数内的局部变量 闭包解决了什么问题 可以读取函数内部的变量 让这些变量的值始终保持在内存中...将构造函数的作用域赋值给新对象。(也所以this对象指向新对象) 执行构造函数内部的代码,将属性添加给obj中的this对象。 返回新对象obj。...1.无法中途退出循环,只能用return退出本次回调,进行下一次回调. 2.它总是返回 undefined值,即使你return了一个值。...它的作用是为 Promise 实例添加状态改变时的回调函数。then方法的第一个参数是resolved状态的回调函数,第二个参数(可选)是rejected状态的回调函数。

    3.8K32

    《现代Javascript高级教程》Javascript执行上下文与闭包

    JavaScript的函数在创建时,就确定了其操作的上下文环境,即词法作用域。这是因为JavaScript采用的是静态作用域,也叫词法作用域,函数的作用域在函数定义的时候就决定了。...闭包的概念虽然来自计算机科学的深层理论,但在日常的JavaScript编程中,它是一个非常实用且常见的特性,被广泛用于如数据隐藏和封装、模块化编程、回调函数和计时器等许多场景中。...再者,每次调用外部函数,都会为内部的闭包创建一个新的作用域。...模块内部的变量和函数对外部是不可见的,只有通过公共接口才能访问。 3. 回调函数和事件处理 闭包常常用于处理回调函数和事件处理,特别是在异步编程中。...当异步操作完成时,它会调用回调函数并传递数据给它。闭包保持了回调函数的上下文,使得回调函数可以访问外部的processData函数。 4. 缓存和记忆化 闭包还可以用于实现缓存和记忆化功能。

    18030
    领券