我有一个计算比特币挖掘盈利能力的程序,因此需要比特币的实时价格,但我也希望用户能够编辑最初加载后的价格现场价格。延迟加载页面,直到收到AJAX呼叫
我遇到的问题是,当我运行我的代码时,bpv最初是未定义的,即使应该在加载正文时调用它,theres没有问题与ajax调用,因为一旦运行更新后正文加载,bpv被定义。
我怀疑这是因为ajax调用需要比加载页面花费的时间更长,而bpv未定义,那么当我运行update()时,代码已经初始化,因此不会有任何延迟。
我也怀疑会解决这个问题,将使页面等待加载,直到ajax调用已被发回,但我无法想象这是可扩展的吗?
我对此很新,所以请尽量轻松一点,谢谢。
<head>
var bpv;
function update(){
getVal();
getPrice();
function getPrice(){
$.ajax({
dataType:"json",
type: 'GET',
url:'https://blockchain.info/ticker',
success: function(data){
bpv = data.USD.last;
}
});
}
}
</head>
<body onload = "update()" >
<script>
function getVal(){
//Current Value of Bitcoin
bpv = document.getElementById("bp").value;
</script>
Value of Bitcoin ($)<br/>
<input type="text" id="bp" onKeyDown="getVal()" onKeyUp="getVal()" value="" ><br/>
编辑:我使用Alex的解决方案,尽管它仅固定显示未定义的输入,而不是计算的最终结果,因此,如果实现在我再次,0.1秒运行的计算的非常janky溶液在页面加载后,如果有人卫生组织比我聪明知道一个更好的解决方案我的耳朵是敞开
您应该使用承诺。 – SLaks
[我如何从异步调用返回响应?](https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) – Liam