我在下面的nodejs中简化了我的代码。我得到了udefined结果,因为函数是异步的。如何获得有效的结果,我是否必须使用承诺?
function findresult() {
var result;
setTimeout(function () {
var result = 2
}, 1000);
return result
}
console.log('findresult ' + findresult());//findresult undefined
答案 0 :(得分:1)
您需要使用简单的回调或承诺,这是一个回调示例:
function findresult(callback) {
var result;
setTimeout(function () {
result = 2
callback(result);
}, 1000);
//return result
}
使用它:
findresult(function(result) {
console.log("Result is: " + result);
});
答案 1 :(得分:1)
为你的例子
function findresult(callback) {
var result;
setTimeout(function () {
var result = 2
callback(result);
}, 1000);
}
findresult(function(result) {
console.log('findresult ' + result);
});
您实际上是将您的操作作为参数(回调)发送给该函数,当该函数完成时,它会将结果提供给您的回调。
但是在nodejs中,你通常也会想要处理错误,回调的通常语法是function(error, result)
(而不仅仅是结果) - 如果error为null,你可以使用结果(调用成功) ,否则它有错误的详细信息。