PhoneGap中的同步方式异步Javascript(esp)

PhoneGap中的同步方式异步Javascript(esp),javascript,jquery,cordova,asynchronous,promise,Javascript,Jquery,Cordova,Asynchronous,Promise,我对在Phonegap中使用的JS异步编程有点陌生。我有一个函数调用 window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,onFSWin , onFSFail); var onFSWin = function(fileSystem) { fileSystem.root.getDirectory("Icenium Demo", {create: false, exclusive: false}, onGetDirect

我对在Phonegap中使用的JS异步编程有点陌生。我有一个函数调用

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,onFSWin , onFSFail);

var onFSWin = function(fileSystem) {        
  fileSystem.root.getDirectory("Icenium Demo", {create: false, exclusive: false}, onGetDirectoryWin, onGetDirectoryFail);
}
这个回调可以工作,但是当有4-5个调用链时,它开始变得非常混乱。我试过这个

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, 
function(filesystem){
        fileSystem.root.getDirectory("Icenium Demo", {create: false, exclusive: false},    onGetDirectoryWin, onGetDirectoryFail); 
       }, onFSFail);
但它认为文件系统未定义,所以有几个问题:

  • Phonegap错误是否以这种方式不接受匿名函数
  • 我正在查看Jquery中的承诺和回调,但我正在努力让自己了解它。谁能给我举一个使用defer对象的例子。我见过使用管道的例子,但这是不推荐的

  • 嗨,我认为延迟模式不适用于Phonegap,它不返回延迟对象。然而,视频在解释承诺模式方面非常有用。这里是一些基本的代码,我为它的价值而工作

    var step1 = $.getJSON('/test1.txt', function (data) {
    return data;
    });
    
    
    
    var step2 = $.getJSON('/test2.txt', function (data) {
    return data;
    });
    
    var processStep1 = function (data) {
    var d1 = data.one;
    alert(d1);
    return $.getJSON('/test2.txt', function (data) {
        return data;
    });
    
    }


    看一看,我几个小时前问过这个问题。回电很令人沮丧,对吧?在F#中,回调链非常简单-您可以使用F#Async。它看起来像同步代码,但不是。F#Async使用WebSharper编译为JavaScript,PhoneGap支持也即将到来。也许这只是变量/函数范围问题?那些
    function(data){return data;})
    位是完全冗余的。
    var processStep2 = function (data) {
    $.each(data, function (key, val) {
        alert(val);
    });
    }
    
    step1.then(processStep1).then(processStep2);