首页 > 编程语言 >在nodejs环境使用promise函数

在nodejs环境使用promise函数

时间:2024-01-14 21:55:50浏览次数:26  
标签:resolve const 函数 txInfo nodejs promise new Promise payload

 

如果单纯的使用promise,对环境比较简单,只需要一个js文件即可。

// const p1 = new Promise((resolve, reject) => {
//     setTimeout(() => {
//         resolve('resolve')
//     }, 1000)
// })

// const p2 = new Promise((resolve, reject) => {
//     setTimeout(() => {
//         reject('rejcet1')
//     }, 1000)
// })

// const p3 = new Promise((resolve, reject) => {
//     setTimeout(() => {
//         reject('rejcet2')
//     }, 1000)
// })

// const allp = [p1, p2, p3]
// Promise.all(allp)
//     .then((res) => {
//         console.log(res)
//     })
//     .catch((err) => {
//         console.log(err) // reject1
//     })









// function verify1(content){
//     return new Promise((resolve,reject)=>{
//         setTimeout(function(){
//             resolve(true)
//         },200)
//     })
// }

// function verify2(content){
//     return new Promise((resolve,reject)=>{
//         setTimeout(function(){
//             resolve(true)
//         },700)
//     })
// }

// function verify3(content){
//     return new Promise((resolve,reject)=>{
//         setTimeout(function(){
//             resolve(true)
//         },300)
//     })
// }

// Promise.all([verify1('校验字段1的内容'),verify2('校验字段2的内容'),verify3('校验字段3的内容')]).then(result=>{
//     console.log(result)//[true, true, true]

//     let verifyResult = result.every(item=>item)
//     //验证结果
//     console.log(verifyResult?'通过验证':'未通过验证')// 通过验证
// }).catch(err=>{
//     console.log(err)
// })

 

 

如果是复杂调用(调用项目中的其他文件,且用的process.env.Env等),则启动时必须在根目录下,否则找不到变量。

cd $Root

node ./path/to/test_promise.js

 

import { RpcClient } from "../../indexer/rpc_client.js";
import { getValidPayload } from "../../indexer/updateSrc20.js";

const rpc_client = new RpcClient()
console.log('rpc_client', rpc_client)



const txhashs = [
    "3212c8c1caecf1c37ea67d565d39436cc7f69d98bda3877e1e4cec1381f9aba4",
    "ec07c26ddecfd00d765e4c68dcd3e864d40feb86c320ad2656aff8a9f4be2c5c",
    "8e24e4071fe9fae6b91c0c1b964a3f3a095ccffea3406ff7df53bd790b61f1a9",
]
// function generateReqFn(txhashs) {
//     const arr = []
//     for (let txhash of txhashs) {
//       arr.push(new Promise(async (resolve) => {
//         const txInfo = await rpc_client.getTransaction(txhash)
//         // remove condition: !txInfo.blockhash
//         if (!txInfo || Object.keys(txInfo).length === 0) {
//           resolve('');
//         }
//         // after block height 796000
//         const payload = await getValidPayload(txInfo, 796000)
//         if (payload) {
//           resolve({
//             content: payload.raw,
//             from: payload.sender,
//             to: payload.creator,
//             txHash: payload.tx_hash
//           });
//         }
//         resolve('');
//       }))
//     }
//     return arr
//   }

function generateReqFn1() {
    return new Promise(async (resolve) => {
        // const txInfo = await rpc_client.getTransaction(txhashs[0])
        // // remove condition: !txInfo.blockhash
        // if (!txInfo || Object.keys(txInfo).length === 0) {
        //     resolve('');
        // }
        // // after block height 796000
        // const payload = await getValidPayload(txInfo, 796000)
        // if (payload) {
        //     resolve({
        //         content: payload.raw,
        //         from: payload.sender,
        //         to: payload.creator,
        //         txHash: payload.tx_hash
        //     });
        // }
        resolve('');
    })
}
function generateReqFn2() {
    return new Promise(async (resolve) => {
        // const txInfo = await rpc_client.getTransaction(txhashs[1])
        // // remove condition: !txInfo.blockhash
        // if (!txInfo || Object.keys(txInfo).length === 0) {
        //     resolve('');
        // }
        // // after block height 796000
        // const payload = await getValidPayload(txInfo, 796000)
        // if (payload) {
        //     resolve({
        //         content: payload.raw,
        //         from: payload.sender,
        //         to: payload.creator,
        //         txHash: payload.tx_hash
        //     });
        // }
        resolve('');
    })
}

Promise.all([generateReqFn1(), generateReqFn2()]).then((resArr)=>{
    console.log('返回值数组', resArr);
    // res 接收的是一个数组,.all()方法中请求几个方法,数组的值就有几个
    // res[0] 是this.getMethodsFirst()的返回成功的值 , res[1] 是this.getMethodsSecond()的返回成功的值
    // 接收到返回值之后,就可以做自己想要做的事情了
}).catch(error => {
    console.log(error)  // rejectReason of any first rejected promise
});

 

标签:resolve,const,函数,txInfo,nodejs,promise,new,Promise,payload
From: https://www.cnblogs.com/zccst/p/17964254

相关文章

  • 用数组作为函数参数来实现冒号排序函数
    define_CRT_SECUNRE_NO_WARNINGS1include<stdio.h>voidbubble_sort(intarr[],intsz){inti=0;for(i=0;i<sz;i++)//冒泡的次数{intflag=1;//假设这一趟排序已经有序intj=0;for(j=0;j<sz-1-i;j++){if(arr[j]>arr[j+1]){inttmp......
  • PHP学习第二天:流程控制与函数
    在PHP学习的第二天,我深入了解了流程控制和函数的使用。早上,我学习了条件语句和循环语句的使用。通过条件语句,我可以根据不同的条件执行不同的代码块。我学习了使用if、else和switch语句来处理不同的条件判断。循环语句则允许我重复执行一段代码,直到满足特定的条件。我学习了使用for......
  • Promise超详细源码解读
    说到promise,相信大家在日常开发中都经常使用到,它是我们异步操作中必不可少的一部分,可以让代码看起来变得更好理解;我曾在技术社区看过许多关于promise底层原理的文章,大概原理明白,这次,我准备系统的分析实现源码并记录下来,本文将一行行代码去分析最后附加流程图和总结,希望这能对你......
  • SparkSQL 自定义聚合函数[强类型]
    本文的前提条件:SparkSQLinJava参考地址:UserDefinedAggregateFunctions(UDAFs)1.自定义实体类packagecn.coreqi.entity;importjava.io.Serializable;publicclassAverageimplementsSerializable{privatelongtotal;privatelongcount;publi......
  • LEAD和LAG窗口函数
    LEAD函数用于获取当前行后面的行的数据。SELECTcolumn_name,LEAD(column_name,n)OVER(ORDERBYsome_column)ASnext_valueFROMyour_table;LAG函数用于获取当前行前面的行的数据。SELECTcolumn_name,LAG(column_name,n)OVER(ORDERBYsome_column)A......
  • 函数作用域
    '''定义的名字可以使用区域在函数外面定义的名字都属于全局名字在函数里面定义的名字都属于局部名字局部作用域和全局作用域Python自带名字(函数名和变量名)内置区域函数外面定义的名字:区局区域函数里面定义的名字:局部区域'''#a=1#定义全局变量deffunc():a=1#定义局......
  • js delete()和 clear()函数
    constm=newMap();constfunctionKey=function(){};constsymbolKey=Symbol();constobjectKey=newObject();m.set(functionKey,"functionValue");m.set(symbolKey,"symbolValue");m.set(objectKey,"ob......
  • js Map函数
    定型数组中值的下溢和上溢不会影响到其他索引,但仍然需要考虑数组的元素应该是什么类型。定型数组对于可以存储的每个索引只接受一个相关位,而不考虑它们对实际数值的影响。以下代码演示了如何处理下溢和上溢://长度为2的有符号整数数组//每个索引保存一个二补数形式的有符号......
  • SparkSQL 自定义聚合函数[弱类型]
    本文的前提条件:SparkSQLinJava代码如下1.自定义聚合函数packagecn.coreqi.udaf;importorg.apache.spark.sql.Row;importorg.apache.spark.sql.expressions.MutableAggregationBuffer;importorg.apache.spark.sql.expressions.UserDefinedAggregateFunction;import......
  • GDB调试之函数调用栈管理(八)
    栈帧:当程序进行函数调用的时候,比如说在哪里调用,这些信息我们称之为栈帧。每一个栈帧的内容包括调用的参数,局部变量,寄存器等这些信息,这就是一个栈帧。调用栈:所有栈帧组成的信息称之为调用栈,或者我们也可以称之为调用堆栈。栈的特性是后进先出,函数调用也是这样,如果函数1里面调用了......