gpt4 book ai didi

JavaScript:不会停止执行以下行的回调

转载 作者:行者123 更新时间:2023-11-30 08:49:38 24 4
gpt4 key购买 nike

在这个问题之前,我已经认为我已经掌握了 JavaScript.. 但是没有,甚至还差得远 :)

我目前正在使用 require.js 进行编程并尝试使用回调创建方法(因为异步 js),但问题是代码在我的 callback(); 调用后继续执行。

请看下面的例子:

var Second = function () {
console.log("Second init");
};

Second.prototype.load = function (callback) {

console.log("Second load");

var timeOut = setTimeout(function () {

clearTimeout(this);

if (true) {
console.log("Second interval ended.. GOOD");
callback(true);
}

console.log("Second interval ended.. NO, YOU SHOULD NOT BE HERE!");
callback(false);

}, 1000);
};

var First = function () {

console.log("First init");
var second = new Second();

second.load(function (returned) {
console.log("Second returned: " + returned);
});

};

First();

这将输出:

First init
Second init
Second load
Second interval ended.. GOO
Second returned: true
Second interval ended.. NO, YOU SHOULD NOT BE HERE!
Second returned: false

显然最后两行太多了......我不想要的是在以下场景中进行回调的正确方法......我试过:

if (true) {
console.log("Second interval ended.. GOOD");
return callback(true);
}

哪个有效,并且:

if (true) {
console.log("Second interval ended.. GOOD");
return function() {
callback(true);
}
}

哪个也有效,但对我来说,这两个方案都像是错误的解决方案。如何正确执行此操作?谢谢!

最佳答案

这可能是一个见仁见智的问题,但 return callback() 通常是标准。您可以在 Node 源代码中看到它以这种方式使用。来自文件系统模块的示例:

fs.fstat(fd, function(er, st) {
if (er) return callback(er);
size = st.size;
if (size === 0) {
// the kernel lies about many files.
// Go ahead and try to read some bytes.
buffers = [];
return read();
}

buffer = new Buffer(size);
read();
});

关于JavaScript:不会停止执行以下行的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19072228/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com