我有一個計算比特幣挖掘盈利能力的程序,因此需要比特幣的實時價格,但我也希望用戶能夠編輯最初加載後的價格現場價格。延遲加載頁面,直到收到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