首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
duola
V2EX  ›  JavaScript

请教一个简单的 js 问题。

  •  1
     
  •   duola · 246 天前 · 2770 次点击
    这是一个创建于 246 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在这里麻烦大家了,谢谢!

    16 回复  |  直到 2019-11-24 22:42:38 +08:00
    Luoheqp
        1
    Luoheqp   246 天前
    难道 return 不能解决么?执行的时候前面放个变量接收就好了
    wyongjian
        2
    wyongjian   246 天前
    在 tmp_md5 = spark.end()前面加个 return 变成 return tmp_md5 = spark.end()
    uilvn
        3
    uilvn   246 天前
    这个函数会异步读取文件,可以用类似
    return new Promise((resolve, reject) => {
    ...
    resolve(tmp_md5)
    })
    的方法做
    jc89898
        4
    jc89898   246 天前
    Promise
    Biwood
        5
    Biwood   246 天前
    由于是 File ​ Reader ​.read ​ AsArray ​ Buffer 是一个异步操作,所以需要用到回调函数:

    get_filemd5sum(ofile, callback) {
    ...
    tmp_md5 = spark.end();
    callback(temp_md5);
    ...
    }

    或者用 Promise 也行,方法如 3 楼
    kinghly
        6
    kinghly   246 天前
    你的 tmp_md5 是全局变量来的。
    supuwoerc
        7
    supuwoerc   246 天前
    这是异步操作,像楼上说的用 promise+then 写吧

    promise 对象: http://es6.ruanyifeng.com/#docs/promise
    hedamao9999
        8
    hedamao9999   246 天前 via Android
    async await 也可以,不过注意兼容性
    jin5354
        9
    jin5354   246 天前
    异步操作,promise 包一下吧
    duola
        10
    duola   246 天前
    @Luoheqp @wyongjian
    函数异步读取文件,return 不了值。
    感谢两位回复。
    duola
        11
    duola   246 天前
    @uilvn 非常感谢,我用了你的方法可以取得到值。
    @jc89898 谢谢你的关键字,我了解一下。
    @Biwood 非常感谢,我也试也你的办法,也是可以的。
    @supuwoerc 非常感谢,我好好看一下。
    @hedamao9999 谢谢提醒。
    @jin5354 感谢回复,

    问题已经得到解决,非常感谢各位!

    总结:是自己对 JavaScript 了解得太少了,得加强学习。
    lzvezr
        12
    lzvezr   246 天前 via iPhone
    用 promise 包装一下,然后直接上 async/await 就非常爽
    ochatokori
        13
    ochatokori   246 天前 via Android
    要么 callback, 要么 promise
    我初学的时候也被这个问题困扰哈哈,异步的结果 return 不出去。。。
    chenjunyue520
        14
    chenjunyue520   245 天前
    callback 进去吧。
    chenhui7373
        15
    chenhui7373   62 天前
    @duola 你好 能帮个忙吗
    chenhui7373
        16
    chenhui7373   62 天前
    能不能转让下 《程序员聊设计》这本书
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2151 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 33ms · UTC 12:55 · PVG 20:55 · LAX 04:55 · JFK 07:55
    ♥ Do have faith in what you're doing.