javascript - 如何从 JavaScript 中的异步函数传递参数?

标签 javascript json asynchronous

我正在尝试将两个值从两个异步函数传递给一个函数,但我不知道如何继续。这是代码:

    var btcPriceInUSD;
var priceExchangeMXN;
var btcLink = "https://blockchain.info/ticker";
var exchangeRateLink = "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20%28%22USDMXN%22%29&env=store://datatables.org/alltableswithkeys&format=json";

//Get btc price in USD
$.getJSON(btcLink, function(btcData) 
    {   
        btcPriceInUSD = btcData.USD.last;
        //document.write(btcPriceInUSD);
    });     


//Get current USD/MXN exchange rate
$.getJSON(exchangeRateLink, function(exchangeData) 
    {   
        priceExchangeMXN = exchangeData.query.results.rate.Rate;
        //document.write(priceExchangeMXN);
    });     


//Convert btc price to MXN
function convertToMXN(btc,toMXN){
    var result = parseFloat(btc) * parseFloat(toMXN);
    document.write(result);
}


convertToMXN(btcPriceInUSD,priceExchangeMXN)

我知道问题是我在异步函数之外调用该函数,因此它没有接收到数字,并且它给了我一个 NAN (不是数字),但我不知道如何正确传递这些函数两个参数分别在不同的函数中检索,是否可以将 btcPriceInUSD 和 PriceExchangeMXN 合并为一个并从那里调用它?

提前致谢!

最佳答案

尝试使用 $.when().then() ,替换完整函数的返回值来声明异步函数范围之外的变量;还添加错误处理程序

$.when($.getJSON(btcLink, function(btcData) {   
        return btcData.USD.last
       })     
, $.getJSON(exchangeRateLink, function(exchangeData) {   
        return exchangeData.query.results.rate.Rate
    }))
.then(convertToMXN, function err() {console.log(arguments)})

关于javascript - 如何从 JavaScript 中的异步函数传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34059132/

相关文章:

jquery - 使用 jQuery 从 JSON 返回嵌套值

php - 如何使用 PDO::FETCH_UNIQUE 将 json 转换为正确的格式?

javascript - 如何验证 URL 中的内容 (Javascript)

python - 使用 call_soon() 和 ensure_future() 的区别

wpf - 异步 MVVM 命令

javascript - Angularjs - 当 $http 内的范围值发生变化时,ng-show 不起作用

javascript - 在 YUI 或 jQuery 之间进行选择会影响 .js 文件的整体设计吗?

javascript - 如何在 FireFox 中允许异步编程复制到剪贴板功能

javascript - Uploadify 是否支持 jQuery 1.4?

javascript - 无法从 keydown 事件重置 MUI DatePicker