相关疑难解决方法(0)

如何从异步调用返回响应?

我有一个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)

javascript ajax jquery asynchronous xmlhttprequest

5208
推荐指数
38
解决办法
134万
查看次数

使用$ http.then()和$ q.all()将并行和链接请求进行角度组合

我有一组相当复杂的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)

javascript promise angularjs

26
推荐指数
1
解决办法
2万
查看次数