Javascript - 动态函数调用



如何获得低于返回值?

var data = sql.execute({query:"select * from Profile_User"}).then(function (result){    
return result; // actual result = [{id:1, name:"Mr. Test"}] 
}, function( err ) {
console.log( "Something bad happened:", err );
});
console.log("Received data"+JSON.stringify(data));

我的控制台中的结果:Received data{"_handler":{"resolved":false}}

正如上面已经回答的那样 - 你的函数返回 Promise,所以只有在 promise 被解析时才会定义结果(或者如果 promise 失败,则不会被辩护(。

这里的最佳实践是顺便构建你的异步程序,当所有需要结果的代码都将放在结果/拒绝 Promise 回调上时:

var data = sql.execute({query:"select * from Profile_User"}).then(function (result){    
console.log("Received data"+JSON.stringify(data));
// doing anything with data
}, function( err ) {
console.log( "Something bad happened:", err );
});

如果您需要"等待",而承诺将被解析 - 您可以使用新的异步/等待功能,但您可能理解,这些东西将停止您的线程执行,直到承诺解析。

在这种情况下,您需要将异步代码包装到另一个异步函数,如下所示:

async executeSQLAndDoSomething () => {
try {
var data = await sql.execute({query:"select * from Profile_User"}) // Will be thread stop here
console.log(data)
// Doint something with data
} catch (err) {
// ... error checks 
}
}

在此处阅读有关 async/await 的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await

不能从Promise返回值。您需要放在rejectedfulfilled功能上的所有逻辑。

var data = sql.execute({query:"select * from Profile_User"}).then(function (result){    
console.log("Received data" + JSON.stringify(result)); 
}, function( err ) {
console.log( "Something bad happened:", err );
});

sql.execute 是一个异步调用,console.log(( 不会等待它完成,而是会打印当前的承诺及其状态
要访问您可以执行的结果

var data = sql.execute({query:"select * from Profile_User"}).then(function (result){    
return result; // actual result = [{id:1, name:"Mr. Test"}] 
}, function( err ) {
console.log( "Something bad happened:", err );
});
data.then(function(result){
console.log("Received data"+JSON.stringify(data));    
})

相关内容

  • 没有找到相关文章

最新更新