2015-09-01 84 views
-1

我在下面的nodejs中簡化了我的代碼。我得到了udefined的結果,因爲函數是異步的。我如何得到有效的結果,我是否必須使用承諾?nodejs結果未定義(異步)?

function findresult() { 
    var result; 
    setTimeout(function() { 
     var result = 2 
    }, 1000); 
    return result 
} 
console.log('findresult ' + findresult());//findresult undefined 
+1

承諾或簡單的回調。 – tymeJV

+0

如何做回調 – irom

回答

1

你要麼需要使用一個簡單的回調或承諾,這裏有一個回調的例子:

function findresult(callback) { 
    var result; 
    setTimeout(function() { 
     result = 2 
     callback(result); 
    }, 1000); 
    //return result 
} 

,並使用它:

findresult(function(result) { 
    console.log("Result is: " + result); 
}); 
1

您例如

function findresult(callback) { 
    var result; 
    setTimeout(function() { 
     var result = 2 
     callback(result); 
    }, 1000); 
} 
findresult(function(result) { 
    console.log('findresult ' + result); 
}); 

你本質上是發送把你的行爲作爲參數(回調函數),當函數完成時,它會給你的回調結果。但你通常也會想要處理錯誤,回調的通常語法是function(error, result)(而不僅僅是結果) - 如果錯誤爲空,則可以使用結果(調用成功),否則有錯誤的詳細信息。