我有一个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`.
我已经开发了几年的JavaScript,我根本不理解有关承诺的大惊小怪.
似乎我所做的只是改变:
api(function(result){
    api2(function(result2){
        api3(function(result3){
             // do work
        });
    });
});
无论如何,我可以使用像async这样的库,例如:
api().then(function(result){
     api2().then(function(result2){
          api3().then(function(result3){
               // do work
          });
     });
});
哪个代码更多,可读性更低.我没有在这里获得任何东西,它也不会突然神奇地"平坦".更不用说必须将事物转换为承诺.
那么,这里的承诺有什么大惊小怪?
延期,承诺和期货有什么区别?
这三者背后是否有普遍认可的理论?
根据我的理解,有三种方法可以调用异步代码:
request.on("event", callback);fs.open(path, flags, mode, callback);我找到了一个承诺库https://github.com/kriszyp/node-promise,但我没有得到它.
有人可以解释一下什么是承诺,为什么我应该使用它?
另外,为什么它从Node.js中删除了?