Nasa.js icon indicating copy to clipboard operation
Nasa.js copied to clipboard

`Nasa.user.getAddr()` 有 bug,分析发现原来是钱包扩展的 bug

Open cssmagic opened this issue 7 years ago • 2 comments

我只是在测试中发现了一个现象,暂时没有深入阅读钱包扩展的源码。

在每个交互周期内(页面 → 钱包扩展 → 页面),NasExtWallet.getUserAddress() 方法只能承载一个回调。也就是说,连续多次调用 NasExtWallet.getUserAddress(callback),最后一次注册的 callback 会覆盖之前的所有 callback。

比如有以下代码:

NasExtWallet.getUserAddress(function () {
	console.log(1)
})
NasExtWallet.getUserAddress(function () {
	console.log(2)
})
NasExtWallet.getUserAddress(function () {
	console.log(3)
})
NasExtWallet.getUserAddress(function () {
	console.log(4)
})

会在控制台得到 4 4 4 4,而不是 1 2 3 4

cssmagic avatar Sep 02 '18 08:09 cssmagic

为绕过此 bug,Nasa.user.getAddr() 需要短时间缓存取到的用户地址,避免重复调用 NasExtWallet.getUserAddress() 且回调被覆盖的情况。

cssmagic avatar Sep 02 '18 17:09 cssmagic

~~计划在 v0.2.0-beta.3 修复此问题。~~

计划在 v0.2.x 修复此问题。

cssmagic avatar Sep 03 '18 06:09 cssmagic