首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将其余代码作为回调函数传递

将其余代码作为回调函数传递
EN

Stack Overflow用户
提问于 2017-10-10 06:22:32
回答 1查看 41关注 0票数 0

在已经完成的javascript函数中间,您想要调用一个新的异步函数。因此,您需要将“代码的其余部分”作为回调函数作为参数传递给这个新函数。

代码语言:javascript
运行
AI代码解释
复制
function sample() {
    alert("a bunch of codes");

    alert("another a bunch of codes");
}

我必须更改函数,如下所示。

代码语言:javascript
运行
AI代码解释
复制
function sample() {
    alert("a bunch of codes");

    var cb = function () {
        alert("another a bunch of codes");
    };

    newFunction(cb);
}

如果我想添加另一个必须等待第一个函数的函数,该怎么办?然后我得到了许多多级回调函数来等待另一个..

那么ES5的最佳实践是什么呢?

EN

回答 1

Stack Overflow用户

发布于 2017-10-10 07:29:17

在ES5中,就像你说的,你必须将多个回调函数嵌套在一起。

示例:

代码语言:javascript
运行
AI代码解释
复制
function myFunction2(){
    console.log(2);

  let myFunction = () => {
    console.log(1);
    }

  myFunction();
}
myFunction2();
// OUTPUT
// 2
// 1

ES6还提供了一种新的替代方案promises

示例:

代码语言:javascript
运行
AI代码解释
复制
let myPromise = new Promise((resolve, reject) => {
  setTimeout(function(){
    resolve(1);
  }, 250);
});

console.log(2);
myPromise.then((successMessage) => {
  console.log(successMessage);
});
// OUTPUT
// 2
// 1

ES8提供了一个更好的替代方案(尽管它只是基于promises的语法糖),但是您可以将async函数与await一起使用。

示例:

代码语言:javascript
运行
AI代码解释
复制
function resolveAfter2Seconds(x) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}


async function add1(x) {
  const a = await resolveAfter2Seconds(20);
  const b = await resolveAfter2Seconds(30);
  return x + a + b;
}

add1(10).then(v => {
  console.log(v);  // prints 60 after 4 seconds.
});

但请记住,您可能需要使用Babel来转换您的js,以便与所有浏览器兼容。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46659839

复制
相关文章
CURL的超时与重试
curl 的功能非常强大, 参数也很繁多, 我们不仅常用于命令行, 在php中也有类似 curl 拓展的实现, 并且也对 libcurl 库提供了非常好的支持.
用户2825413
2020/02/11
11.8K0
微服务超时与重试
经常被提起的两种超时:connection timeout、socket timeout
码农戏码
2021/03/23
1.5K0
Python设置函数调用超时,进程卡住
       最近写的Python代码不知为何,总是执行到一半卡住不动,为了使程序能够继续运行,设置了函数调用超时机制。
py3study
2020/01/09
2.5K0
Python:requests:详解超时和重试
网络请求不可避免会遇上请求超时的情况,在 requests 中,如果不设置你的程序可能会永远失去响应。 超时又可分为连接超时和读取超时。
丹枫无迹
2019/01/22
5.8K0
聊聊openfeign的超时和重试
openfeign是一种声明式的http客户端,它可以方便地集成到springcloud,像调用本地方法一样使用http方式调用远程服务。今天我们来聊一聊feign的超时和重试。
jinjunzhu
2020/11/19
5.8K0
Spring Cloud OpenFeign 超时与重试
1、连接超时 (connectTimeout) 和 读取超时 (readTimeout) 同时配置时,才会生效。
冯文议
2022/01/11
2.6K0
Linkerd 通过 ServiceProfile 实现超时和重试
Linkerd 服务网格解决的最重要问题之一是可观察性:提供服务行为的详细视图,Linkerd 对可观察性的价值主张是,它可以为你的 HTTP 和 gRPC 服务提供黄金指标,这些都是自动执行,无需更改代码或开发人员参与的。
我是阳明
2022/09/29
7240
Linkerd 通过 ServiceProfile 实现超时和重试
spring cloud feign调用超时重试retryer
在上面的介绍中,可以知道Retryer接口,Default类,重试异常类RetryerException,我们可以通过重写Retryer接口的方法continueOrPropagate来实现重试,比如:
xdd
2022/07/12
1.7K0
服务超时、重试次数、熔断如何设置
针对服务调用都要设置一个超时时间,以避免依赖的服务迟迟没有返回调用结果,把服务消费者拖死。
栋先生
2020/01/02
1.8K0
grpc-go之超时与重试(三)
go里面一般会使用Context进行超时控制以及参数传递, 其中超时控制可以使用context.WithDeadline()或者context.WithTimeout()实现, 二者实现效果是一致的.
Johns
2022/09/28
3K1
C# Task 实现任务超时取消、超时取消然后重试 超过重试最大次数就结束。
在C#中,我们可以使用Task类来实现任务超时取消、超时取消然后重试的功能。当一个任务超过指定的重试次数后,程序将自动结束。下面我们将详细介绍如何使用Task类和CancellationTokenSource类来实现这个功能。
郑子铭
2023/08/30
1.9K0
C# Task 实现任务超时取消、超时取消然后重试 超过重试最大次数就结束。
正则零宽导致iOS端uni-app报错:连接服务器超时,点击重试
一个 H5 项目中使用安卓设备一切正常,用 iOS 就显示 连接服务器超时,点击屏幕重试。
德顺
2023/08/25
1.6K0
正则零宽导致iOS端uni-app报错:连接服务器超时,点击重试
[PHP]socket的连接超时 与 读取/写入超时
1. stream_socket_client 函数中的超时时间是连接超时 , 默认是php.ini中的default_socket_timeout配置项
唯一Chat
2019/09/10
5K0
HttpComponents HttpClient连接池(7)-重试
在上一篇文章里我们介绍了 httpclient 连接池中空闲连接的清理,在这里我们主要介绍 http 连接的重试机制。
TA码字
2020/04/07
1.9K0
解决SSH连接Linux超时
在开发当中经常需要登录远程服务器,于是通过 ssh 或者 putty 登录,可是一转身,这厮就自动断开了。让人非常恼火,如何解决 SSH 连接 Linux 超时自动断开?
chuchur
2022/10/25
9.5K0
Memcached连接超时故障排除
在一次例行检查日志的时候,发现Nginx日志中出现了大量的PHP连接Memcached超时的报错信息,如下:
魏杰
2022/12/23
2.8K0
python接口自动化29-requests超时重试方法
“由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败”,这是经常遇到的问题 requests.exceptions.ConnectionError: HTTPSConnectionPool(host=’www.github.com’, port=443): Max retries exceeded with url: / (Caused by NewConnectionError(‘<urllib3.connection.verifiedhttpsconnection object="" at="" 0x0000020f06524ac8="">: Failed to establish a new connection: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。’,)) 一般出现这个问题的原因是:host=’www.github.com’ 主机地址没连上,使用 requests 发请求时,有些网站服务器不稳定,特别是国外的网站,经常会出现连接失败情况。 连接失败后,有时候会抛出上面异常,有时候会一直卡住,进入假死状态,没响应,也不会结束。</urllib3.connection.verifiedhttpsconnection>
上海-悠悠
2020/05/29
5.6K0
[TCP] tcp连接SYN超时重传次数和超时时间
当tcp进行三次握手的时候 , 第一步是客户端发送syn请求 , 服务端返回syn+sck , 客户端响应sck
唯一Chat
2021/04/22
8.7K0
Redis连接长时间不操作连接超时
springboot整合redis,长时间不操作连接超时 我原来的依赖是这个 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 后来一直出现连接超时 解决办法,把依赖改一下 <dependency> <g
高大北
2022/06/14
2.7K0
【韧性设计】韧性设计模式:重试、回退、超时、断路器
软件本身并不是目的:它支持您的业务流程并使客户满意。如果软件没有在生产中运行,它就无法产生价值。然而,生产性软件也必须是正确的、可靠的和可用的。
架构师研究会
2022/05/25
1.3K0
【韧性设计】韧性设计模式:重试、回退、超时、断路器

相似问题

运行shell脚本时如何在Jenkins中标记不稳定的构建

1516

运行shell脚本时出错

16

firebase项目中的Google运行Shell脚本

14

运行shell脚本时的NoClassDefFoundError

20

突然无法运行Shell脚本函数

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文