深度学习,深度睡眠 2023-11-02 18:58 采纳率: 68.8%
浏览 10
已结题

Node中通过Promise获取返回值

函数decrypt返回的是一个Promise对象,console.log(getResult())打印出来是Promise {pending},请问怎样才能通过getResult()从这个对象中获取它的返回值?打印getResult()出来是返回值,而不是Promise {pending}?


const crypto = require('crypto');

function d(e) {
    for (var t = (e + "=".repeat((4 - e.length % 4) % 4)).replace(/\-/g, "+").replace(/_/g, "/"), n = atob(t), r = new Uint8Array(n.length), i = 0; i < n.length; i++)
        r[i] = n.charCodeAt(i);
    return r
}
var text = "X6sYd0tUg+4EP1CeOBKrSK7S53ojwM5pjhdMXn/ET0LF6cjZyKF1YRxNw5XPgq9lQ0jEr2hOCDNTTfFby1Xh/2rAvobvsakg6W21LkNlUYHez1yHDxaQp1+7CxmjBuN6";
var key = "kbSjOqn9O7APLqUZxdCkTQ==";
var iv = "JuhL1cOV5JH9ojzt2g2EPg==";

async function decrypt(text,key,iv) {
    var l ="AES-CBC";
    var t = d(key);
    var i = d(iv);
    var r = await crypto.webcrypto.subtle.importKey("raw", t, l, !0, ["decrypt"]);
    var result = await crypto.webcrypto.subtle.decrypt({
        name: l,
        iv: i
    }, r, d(text));
    result = (new TextDecoder()).decode(result)
    return result
}
function getResult(){
    var p = decrypt(text,key,iv);
    return Promise.all([p]).then(data=>{
        console.log(data[0])
        return data[0]
    })
}

console.log(getResult())      // 输出  Promise {pending}

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-11-02 18:59
    关注

    引自强大而免费的微信小程序:皆我百晓生

    在Node.js中,你可以通过两种方式获取一个Promise的返回值。

    第一种方式是使用Promise的.then()方法,这个方法会在Promise对象变为resolved状态时被调用,并将返回值作为参数传入回调函数。

    getResult().then((result) => {
      console.log(result); // 在这里打印返回值
    });
    

    第二种方式是使用async/await语法,将调用async函数的代码包裹在async函数中,并使用await等待Promise对象的解决。

    async function main() {
      const result = await getResult();
      console.log(result); // 在这里打印返回值
    }
    
    main();
    

    无论你选择哪种方式,最终都能够获取Promise的返回值。请注意,在使用await时,你的代码必须在async函数中执行。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月2日
  • 创建了问题 11月2日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上