我有一个foo发出Ajax请求的函数.我怎样才能从中回复foo?
我尝试从success回调中返回值,并将响应分配给函数内部的局部变量并返回该变量,但这些方法都没有实际返回响应.
function foo() {
var result;
$.ajax({
url: '...',
success: function(response) {
result = response;
// return response; // <- I tried that one as well
}
});
return result;
}
var result = foo(); // It always ends up being `undefined`.
Run Code Online (Sandbox Code Playgroud) 我有一组相当复杂的API调用,我试图尽可能优雅和高效.我理解如何使用服务的promise api $http来链接请求,以及如何使用$q服务并行地发出请求.但是对于这个特定的API工作流程,我需要同时做这两点
以下是高级API流程的示例:
/dog/<dog_id>
/breed/<breed_id>
/food/<food_id>/cat/<cat_id>/turkey/<turkey_id>/fish/<fish_id>第一层请求都有已知的ID.然而,<breed_id>需要使/breed呼叫必须从解析/dog响应,并<food_id>作出必要的/food呼叫必须从解析/breed响应.所以/dog,/breed和/food所有需要进行链接.但是/cat,/turkey并且/fish可以与整个/dog链并行地制造.
我现在得到的(它工作正常)是两组独立的请求.如何改进此流程?有没有办法以一种导致单个承诺执行的方式组合两个堆栈.then()?
var dogId = '472053',
catId = '840385',
turkeyId = '240987',
fishId = '510412';
var myData = {};
var firstSetComplete = false,
secondSetComplete = false,
returnData = function() {
if (firstSetComplete && secondSetComplete) {
console.log("myData.dog", myData.dog);
console.log("myData.dog.breed", myData.dog.breed); …Run Code Online (Sandbox Code Playgroud)