首页 > 其他分享 >js promise对象数组,使用reduce序列化执行

js promise对象数组,使用reduce序列化执行

时间:2023-06-28 17:45:06浏览次数:40  
标签:function resolve console log reduce js Date new 序列化

自己使用mdn官方例子测试了一下,发现还有一些小问题,调试了一下OK了。

const timeOut = function(ms){
return new Promise(function(resolve){
return setTimeout(resolve, ms);
})
}

var p1 = function() {
return new Promise(function (resolve){
console.log(new Date() + ' p1 赋值');
// setTimeout(() => {
// console.log(new Date() + ' resolve(aaa)');
// resolve('aaa');
// }, 1000);
timeOut(1000).then(function(){
console.log(new Date() + ' p1 timeOut赋值');
resolve('aaa');
})
});
}
var p2 = function() {
return new Promise(function (resolve){
console.log(new Date() + ' p2 赋值');
// setTimeout(() => {
// console.log(new Date() + ' resolve(bbb)');
// resolve('bbb');
// }, 2000);
timeOut(2000).then(function(){
console.log(new Date() + ' p2 timeOut赋值');
resolve('bbb');
})
});
}
var p3 = function() {
return new Promise(function (resolve){
console.log(new Date() + ' p3 赋值');
// setTimeout(() => {
// console.log(new Date() + ' resolve(ccc)');
// resolve('ccc');
// }, 1000);
timeOut(1000).then(function(){
console.log(new Date() + ' p3 timeOut赋值');
resolve('ccc');
})
});
}

var arr = [p1, p2, p3];
console.log(arr);
arr.reduce((p, f) => p.then((ret)=>{
console.log(new Date() + ret);
return f();
}), Promise.resolve()).then(result3 => { console.log(new Date() + result3); });

执行结果如下图:

 

标签:function,resolve,console,log,reduce,js,Date,new,序列化
From: https://www.cnblogs.com/xjbkw/p/17512078.html

相关文章

  • fastjson将date转换成了long
     记录一个bug,这个问题是使用fastjson的时候遇到了将date的数据转换成long类型而不是转换成string环境fastjson使用的是1.2.76造成的原因更具环境大家可能已经猜测到了真实的原因-版本太低造成的。这个项目的存在时间比较久所以在使用的依赖上版本比较低,除了源码之外......
  • 分布式计算框架-MapReduce
    MapReduce是分散->汇总模式的分布式计算框架,可供开发人员开发相关程序进行分布式数据计算。MapReduce提供了2个编程接口:MapReduce其中Map功能接口提供了分散的功能,由服务器分布式对数据进行处理。Reduce功能接口提供了汇总(聚合)的功能,将分布式的处理结果汇总统计......
  • Vue.js 渲染函数和 JSX
    学习目录:Vue.js简介Vue.js实例与数据绑定Vue.js计算属性和侦听器Vue.js条件渲染和列表渲染Vue.js事件处理Vue.js表单输入绑定Vue.js组件基础Vue.js组件通信Vue.js插槽Vue.js动态组件和异步组件Vue.js自定义指令Vue.js过渡和动画Vue.js混入Vue.js自定义事件和v-model......
  • nextjs项目引入vconsole报错处理:ReferenceError: window is not defined
    引入文件(nextjs项目):importVconsolefrom'vconsole'报错: 处理:letVconsoleif(typeofwindow!=='undefined'){Vconsole=require('vconsole')}打开调试:if(typeofwindow!=='undefined'){//加了一个打开调试......
  • 2023.6.28 - vue项目打包内存堆栈溢出JS stacktrace
    vue项目打包时报错,JSstacktrace:ReachedheaplimitAllocationfailed-JavaScriptheapoutofmemory这是因为node打包时是有内存空间限制的,node能分配多少空间,默认是根据电脑内存占比来算的。在内存比较小的电脑里,默认分配给node的内存可能不足以支撑起项目运行或者打包......
  • java 序列化 serialVersionUID transient
    问题再现User类实现了序列化,但是没有声明版本号,这个对象放在memcache中,User新添加了1个字段后,把之前的对象从缓存中取出来时,出现了InvalidClassException,为什么会出现这个错误?序列化序列化就是将对象转为流,用于传输或保存。序列化的是“对象状态”,所以就不包括静态变量;反序列化是从......
  • postman 发送json请求
    简介:  postman是一个很好的http模拟器,在测试rest服务时是很好用的工具,可以发送get、post、put等各种请求。 发送json的具体步骤:1、选择post请求方式,同时将header的content-type设置为application/json  2、设置body的编码方式为raw,application/json, raw是发送纯文本,不包含......
  • vue3+vite+js配置路径别名
    1、让vscode认识@符号项目下新建jsconfig.json,配置baseUrl,paths参数{"compilerOptions":{"target":"esnext","useDefineForClassFields":true,"module":"esnext","moduleResolution&q......
  • nodeJS常用路径API示例简记
    常用API汇总:process.cwd():返回当前执行node命令时的所在目录path.dirname():返回当前执行文件的所在目录__dirname:返回当前执行文件的所在目录(只能在CommonJS规范下使用)__filename:返回当前执行文件的绝对路径(只能在CommonJS规范下使用......
  • JS中常用方法
    数组splice:splice()方法的第一个参数是起始索引,第二个参数是要删除的元素数量(可以为0),然后可以传递更多的参数作为要插入的新元素。限制删除的数量:constarr=[1,2,3,4,5];constremoved=arr.splice(0,3);console.log(arr);//Output:[4,5]console.log(rem......