Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
异步回调JavaScript_Javascript_Asynchronous - Fatal编程技术网

异步回调JavaScript

异步回调JavaScript,javascript,asynchronous,Javascript,Asynchronous,我正在尝试解决一个JavaScript挑战,我必须使用异步回调 以下是挑战所说的: 定义一个名为doStuffAsync的函数,该函数接受一个参数回调。您的函数应该读取文件“passwords”的内容,将结果连同额外的文本“OWNED”一起写入文件“world.txt”,然后调用callback而不带任何参数。同时使用异步readAsync和异步writeAsync 我的代码如下: var files = { "passwords": "abc,def", "wor

我正在尝试解决一个JavaScript挑战,我必须使用异步回调

以下是挑战所说的:

定义一个名为doStuffAsync的函数,该函数接受一个参数回调。您的函数应该读取文件“passwords”的内容,将结果连同额外的文本“OWNED”一起写入文件“world.txt”,然后调用callback而不带任何参数。同时使用异步readAsync和异步writeAsync

我的代码如下:

var files = { "passwords": "abc,def", 
              "world.txt": "hello" };
var readAsync = function(file, callback) {
    callback(files[file]);
};
var writeAsync = function (file, contents, callback) {
    files[file] = contents;
    callback();
};
var test = function() {
    files["out.txt"] = "final";
    files["passwords"] = "blank";
};

//this is the part I'm interested in
var doStuffAsync = function (callback) {
    var contents = 0;   
    contents = readAsync("passwords");
    writeAsync("world.txt", contents, callback());
};

下面是挑战的链接

使用回调实现这一点最简单的方法是嵌套函数调用,如下所示:

function doStuffAsync(callback) {
    readAsync("passwords", function(contents) {
        writeAsync("world.txt", contents + "OWNED", function() {
            callback();
        });  
    });
}
在这种情况下,由于回调函数不需要任何参数,因此可以保存一级嵌套,只需执行以下操作:

function doStuffAsync(callback) {
    readAsync("passwords", function(contents) {
        writeAsync("world.txt", contents + "OWNED", callback);  
    });
}

这对于两个回调操作来说并不糟糕,但是当您需要按顺序执行大量异步步骤时,它会很快变得非常混乱。是设计用来帮助管理此问题的一种机制,我建议检查它们。

@enapupe为什么要提到jQuery?没有关系,你的问题是什么?你不明白这篇文章和它的例子吗?您是否注意到您的代码片段与这些示例有什么不同之处?请注意,问题通常会包含一个问题。我在你的帖子中没有看到。在“这是我感兴趣的部分”下面的代码是我写的。问题是,如果我编写的代码没有这样做,我如何解决我需要解决的问题。