我正在开发一个chrome 扩展,在其中单击按钮时,我需要来自ajax GET 的数据,然后需要进行进一步处理。为此,我想要同步 ajax 调用,但它给了我一个错误
错误:主线程上的同步 XMLHttpRequest 已被弃用,因为它会对最终用户的体验产生不利影响。
我知道这个错误是因为我设置了async=false,但是除非我没有从 API 获取数据,否则我无法进行进一步处理。下面是我的代码:
var nonce;
window.addEventListener('load', function load(event){
var createButton = document.getElementById('send');
createButton.addEventListener('click', function() {
signTransaction('abc',12,'abc');
});
});
function signTransaction(to,amount,inputhex){
nonce = getNonce();
console.log(nonce);
tx = {
To : to,
PrivateKey : pri,
Balance : amount,
Nonce : String(nonce),
Gas : "1",
Type : "a64",
Input : inputhex
}
let transaction = new sdag.Signs.NewTransaction(pri,tx);
}
function getNonce() {
var request = new XMLHttpRequest();
request.open('GET', 'http://192.168.xx.xx:9999/getAccount?address=xxxxxxxxx', false);
request.onload = function () {
var data = JSON.parse(this.response);
if (request.status >= 200 && request.status < 400) {
nonce = data.Nonce;
} else {
console.log('error');
}
}
// Send request
request.send(null);
return nonce;
}
您可以签入代码,signTransaction()首先我需要getNonce()函数中的随机数,然后可以更进一步。所以,我将 async false 设置为这个函数。有人可以帮我解决这个问题吗?
相关分类