PhoneGap中的同步方式异步Javascript(esp)
我对在Phonegap中使用的JS异步编程有点陌生。我有一个函数调用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
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,它不返回延迟对象。然而,视频在解释承诺模式方面非常有用。这里是一些基本的代码,我为它的价值而工作
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);