我正在尝试使用 jQuery 调用三个服务。前两个获取数据,第三个使用数据进行更新。
第一部分:我想获取我的银行账户信息:
- 从 Foo Bank,我想得到我的支票
- 从酒吧银行,我想得到我的积蓄
第二部分:当我从两家银行成功获取信息后,我想通过自己的服务将其上传到我的个人支票簿。
这是一些看起来像 Javascript 的伪代码。如果我可以编写同步代码来完成这项工作,这就是我会写的,我知道我做不到。
--PSEUDO CODE
var go = function () {
var acctId;
acctId = 12345;
var myInfo = getAccounts(acctId);
updateCheckbook(myInfo);
}
var getAccounts = function(acctId){
var myInfo;
myInfo = {
id: acctId,
fooDollars: GetFooBank(acctId),
barDollars: GetBarBank(acctId)
};
return myInfo;
}
var updateCheckbook(myInfo){
$.post('http://mySite.com/checkbook/', myInfo);
}
//I want to get the amount from my foo bank account
//Foo Bank uses a web service that allows cross site access
//No bank would ever do this, but I just want to understand how to with $.getJSON.
var fooDollars = function (id) {
var value;
$.getJSON('http://foobank.com/accounts/' + id, null, function (data) {
value = data.checking;
});
//I'm pretty sure this is wrong with an asynchronous call.
return value;
};
var barDollars = function (id) {
//have to use jsonp for bar bank
$.ajax({
url: 'http://barbank.com/accounts/' + id + '&callback=updateBar',
dataType: 'jsonp'
});
//Not really sure how to return a value from a jsonp ajax call
return value;
};
function updateBar(data) {
//Need to take data.savings and get the value back to getAccounts.
//How? I have no idea.
}
我有点了解 jQuery 的延迟方法的作用,但我对所有部分如何组合在一起有点混淆。尤其是:
- 在第一部分中,我需要等待两个银行账户服务都完成,然后再进行下一步。jQuery when 处理等待多个延迟,但我无法理解您如何等待多个函数返回值。
- 在第 1 部分,Foo Bank 中,我调用了
$.getJSON
. 我想获取返回的数据对象并获取 data.checking。如何将该信息返回到 getAccounts() ? - 在第 1 部分,酒吧银行,类似于第 2 部分,除了我如何使用 JSONP 做到这一点?
- 如果我完全偏离了轨道并且应该以不同的方式看待它,那么我也很感激这种反馈。