Promise面试题

ops/2024/10/20 10:02:44/

promise与 fetch、async/await_fetch async 获取结束标志-CSDN博客

手写promise A+、catch、finally、all、allsettled、any、race-CSDN博客

【建议星星】要就来45道Promise面试题一次爽到底(1.1w字用心整理) - 掘金

目录

每隔1秒输出1,2,3

红黄绿灯交替亮

按序执行数组

异步加载图片


每隔1秒输出1,2,3

const arr = [1, 2, 3]
arr.reduce((p, x) => {return p.then(() => {return new Promise(r => {setTimeout(() => r(console.log(x)), 1000)})})
}, Promise.resolve())

红黄绿灯交替亮

function red() {console.log("red");
}
function green() {console.log("green");
}
function yellow() {console.log("yellow");
}
const light = function (timer, cb) {return new Promise(resolve => {setTimeout(() => {cb()resolve()}, timer)})
}
const step = function () {Promise.resolve().then(() => {return light(3000, red)}).then(() => {return light(2000, green)}).then(() => {return light(1000, yellow)}).then(() => {return step()})
}step();

按序执行数组

const time = (timer) => {return new Promise(resolve => {setTimeout(() => {resolve()}, timer)})
}
const ajax1 = () => time(2000).then(() => {console.log(1);return 1
})
const ajax2 = () => time(1000).then(() => {console.log(2);return 2
})
const ajax3 = () => time(1000).then(() => {console.log(3);return 3
})function mergePromise (ajaxArray) {// 存放每个ajax的结果const data = [];let promise = Promise.resolve();ajaxArray.forEach(ajax => {// 第一次的then为了用来调用ajax// 第二次的then是为了获取ajax的结果promise = promise.then(ajax).then(res => {data.push(res);return data; // 把每次的结果返回})})// 最后得到的promise它的值就是datareturn promise;
}mergePromise([ajax1, ajax2, ajax3]).then(data => {console.log("done");console.log(data); // data 为 [1, 2, 3]
});// 要求分别输出
// 1
// 2
// 3
// done
// [1, 2, 3]

异步加载图片

function loadImg(url) {return new Promise((resolve, reject) => {const img = new Image();img.onload = function() {console.log("一张图片加载完成");resolve(img);};img.onerror = function() {reject(new Error('Could not load image at' + url));};img.src = url;});

http://www.ppmy.cn/ops/7549.html

相关文章

arping命令详解

arping – send ARP REQUEST to a neighbour host. arping 是一个在网络中发送 ARP 请求以查找特定 IP 地址对应的 MAC 地址的命令行工具。它的功能类似于 ping 命令,基于ARP协议报文的交互机制,只能测试同一网段或子网的网络主机的连通性。 ARP 是 Add…

[数据结构]——排序——插入排序

目录 ​编辑 1 .插入排序 1.基本思想: 2.直接插入排序: ​编辑 1.代码实现 2.直接插入排序的特性总结: 3.希尔排序( 缩小增量排序 ) 1.预排序 2.预排序代码 3.希尔排序代码 4.希尔排序的特性总结: 1 .插入排序 1.基本思…

小米K8s运维-云原生方向(面经分享)

大家好,我是秋意零。今天分享一篇小米运维面经。 小米K8s运维-云原生方向 一面 2024年4月3日 | 10点 | 一面 | 40 min 左右 1)自我介绍 2)你熟悉Python多一点吗?还熟悉其它语言吗,拿出来写过的? 3&am…

每日三个JAVA经典面试题(三十七)

1.大对象和小对象在内存分配上有什么不同? 大对象和小对象在内存分配上有几个主要的不同之处: 内存分配方式: 小对象:通常分配在堆上,使用堆分配器(如malloc/free或new/delete)进行管理。小对象…

Neural Radiance Fields (NeRF) 和 3D Gaussian Splatting区别

Neural Radiance Fields (NeRF) 和 3D Gaussian Splatting 是两种用于3D场景重建和渲染的技术。它们都旨在创建高质量的3D图像,但它们的技术原理和应用场景有所不同。 1. Neural Radiance Fields (NeRF) NeRF使用深度学习技术,特别是一种密集的神经网络…

svn使用(上传自己的项目到svn上)

安卓开发工具版本 创建项目后,首先在.gitgnore文件里面加入你要过滤的文件路径 然后点击VCS——》share Project,然后下一步选择一个svn路径,点击确定后。然后将代码提交。

HTML的学习-通过创建相册WEB学习HTML-第一部分

文章目录 一、设置中文1.1、添加中文插件1.2、配置显示中文语言 二、学习开始2.1、创建项目文件夹2.2、h1标签示例:生成HTML框架示例:添加h1标签 2.3、h2标签示例:在h1标签下添加h2标签 2.4、h1标签到h6标签层次解析2.5、p标签示例&#xff1…

js高级 笔记02

目录 01 object提供的一些静态方法 02 词法作用域 03 作用域链 04 arguments的使用 05 开启严格模式 06 高阶函数 07 闭包 01 object提供的一些静态方法 Object.create() 对象继承 Object.assign(对象1,对象2) 对象合并 可以将对象2 里面的可枚举属性和自身的属性合并到…