【发布时间】:2019-05-27 22:35:05
【问题描述】:
我正在开发一个 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 设置为这个函数。
有人可以帮我解决这个问题吗?
【问题讨论】:
标签: javascript jquery ajax google-chrome-extension get