请教一个简单的 js 问题。

2019-05-25 08:27:30 +08:00
 duola

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

4775 次点击
所在节点    JavaScript
16 条回复
Luoheqp
2019-05-25 08:31:51 +08:00
难道 return 不能解决么?执行的时候前面放个变量接收就好了
wyongjian
2019-05-25 08:36:19 +08:00
在 tmp_md5 = spark.end()前面加个 return 变成 return tmp_md5 = spark.end()
uilvn
2019-05-25 08:37:31 +08:00
这个函数会异步读取文件,可以用类似
return new Promise((resolve, reject) => {
...
resolve(tmp_md5)
})
的方法做
jc89898
2019-05-25 08:47:23 +08:00
Promise
Biwood
2019-05-25 09:12:43 +08:00
由于是 File ​ Reader ​.read ​ AsArray ​ Buffer 是一个异步操作,所以需要用到回调函数:

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

或者用 Promise 也行,方法如 3 楼
kinghly
2019-05-25 09:37:18 +08:00
你的 tmp_md5 是全局变量来的。
supuwoerc
2019-05-25 10:09:26 +08:00
这是异步操作,像楼上说的用 promise+then 写吧

promise 对象: http://es6.ruanyifeng.com/#docs/promise
BreezeInWind
2019-05-25 10:11:38 +08:00
async await 也可以,不过注意兼容性
jin5354
2019-05-25 11:34:31 +08:00
异步操作,promise 包一下吧
duola
2019-05-25 12:42:02 +08:00
@Luoheqp @wyongjian
函数异步读取文件,return 不了值。
感谢两位回复。
duola
2019-05-25 12:53:32 +08:00
@uilvn 非常感谢,我用了你的方法可以取得到值。
@jc89898 谢谢你的关键字,我了解一下。
@Biwood 非常感谢,我也试也你的办法,也是可以的。
@supuwoerc 非常感谢,我好好看一下。
@hedamao9999 谢谢提醒。
@jin5354 感谢回复,

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

总结:是自己对 JavaScript 了解得太少了,得加强学习。
lzvezr
2019-05-25 13:01:09 +08:00
用 promise 包装一下,然后直接上 async/await 就非常爽
ochatokori
2019-05-25 14:23:08 +08:00
要么 callback, 要么 promise
我初学的时候也被这个问题困扰哈哈,异步的结果 return 不出去。。。
chenjunyue520
2019-05-26 07:29:41 +08:00
callback 进去吧。
chenhui7373
2019-11-24 22:41:53 +08:00
@duola 你好 能帮个忙吗
chenhui7373
2019-11-24 22:42:38 +08:00
能不能转让下 《程序员聊设计》这本书

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/567495

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX