Nasa.js
Nasa.js copied to clipboard
`Nasa.user.getAddr()` 有 bug,分析发现原来是钱包扩展的 bug
我只是在测试中发现了一个现象,暂时没有深入阅读钱包扩展的源码。
在每个交互周期内(页面 → 钱包扩展 → 页面),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。
为绕过此 bug,Nasa.user.getAddr() 需要短时间缓存取到的用户地址,避免重复调用 NasExtWallet.getUserAddress() 且回调被覆盖的情况。
~~计划在 v0.2.0-beta.3 修复此问题。~~
计划在 v0.2.x 修复此问题。