gpt4 book ai didi

javascript - 在不使用回调的情况下将值从嵌套函数返回到它的父级

转载 作者:搜寻专家 更新时间:2023-10-31 08:12:01 24 4
gpt4 key购买 nike

我编写了以下函数来检查我的HTML5 openDatabase 表是否已填满或为空:

var that = this;
that.db = openDatabase('dbname', '1.0', "description", 1024 * 1024);

that.tableFilled = function( tableName ) {

that.db.transaction(function ( tx ) {

tx.executeSql('SELECT * FROM ' + tableName, [],
function success( c, results ) {
return ( results.rows.length > 0 ? true : false );
},
function fail() {
console.log('FAiL');
}
);

});

};

我正在尝试将返回 truefalse 值给tableFilled()

实际上 that.tableFilled('tableName') 返回 undefined

我最终想要实现的是:

if ( that.tableFilled('tableName') ){
// ...
}

有没有一种方法可以返回truefalse值给父函数tableFilled() 不使用回调 ?

最佳答案

你正在处理一个异步过程,所以你不能直接返回一个值。

然而,您可以做的是返回一个 promise 。您的函数将 promise 在可用时为您提供该值。要从 promise 中获取值(value),您必须添加回调函数。

你仍然需要使用回调函数,但你不再需要嵌套你的函数,你可以序列化它们。

这可能超出了您当前需求的范围,但这是一个非常有趣的概念。如果您想了解更多信息,只需 Google 即可。

这是一个简短的例子:

function my_function() {
var promise = new_promise();
do_asynchronous(function callback(result) {
promise.resolve(result); // gets called after 1 second
});
return promise;
}

var promise = my_function();
promise.done(function(result) {
console.log(result); // prints "yay!" after 1 second
});

function new_promise() {
var handlers = [];
return {
"resolve": function (result) {
for (var i = 0; i < handlers.length; i += 1) {
handlers[i](result);
}
},
"done": function (a_callback) {
handlers.push(a_callback);
}
};
}

function do_asynchronous(callback) {
setTimeout(function () {
callback("yay!");
}, 1000);
}

关于javascript - 在不使用回调的情况下将值从嵌套函数返回到它的父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9234769/

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