[英]How to return a value out of an async function in javascript?
[英]How to return result value out function JavaScript
如何返回response.on的結果是的結果可變外response.on
和作用下登入如何返回response.on的結果是的結果可變外response.on
登入和作用下
const signIn = async (password) => {
var request = new DeviceAuthQuery();
request.setPassword(password);
var response = client.authenticate(request, {}, (err, response) => {
console.log("Request Sent 1111");
});
return response.on('data', function (reply) {
console.log("Data Received 2222");
console.log('Data: 22222' + reply.getAuthjwt());
var result = reply.getAuthjwt();
return result
});
console.log("the result is==>", result)
response.on('status', function (status) {
console.log("Response Status:");
console.log('Code: ' + status.code);
console.log('Details: ' + status.details);
if (status.metadata) {
console.log("Received metadata");
console.log(status.metadata);
}
});
response.on('error', function (err) {
console.log("Error:");
console.log('Error Code: ' + err.code);
console.log('Error Message: ' + err.message)
});
}
export {
signIn
};
您必須在response.on('data',..)
之前刪除 return 語句response.on('data',..)
此 return 語句將返回給函數調用者,並且下面的console.log
調用是無法訪問的代碼。 就像評論中提到的@Learn for Fun 一樣,您可以將結果存儲在回調范圍之外的變量中:
signIn = async (password) => {
var request = new DeviceAuthQuery();
request.setPassword(password);
var response = client.authenticate(request, {}, (err, response) => {
console.log('Request Sent 1111');
});
let dataResponse;
response.on('data', function(reply) {
console.log('Data Received 2222');
console.log('Data: 22222' + reply.getAuthjwt());
dataResponse = reply.getAuthjwt();
});
console.log('the result is==>', dataResponse);
response.on('status', function(status) {
console.log('Response Status:');
console.log('Code: ' + status.code);
console.log('Details: ' + status.details);
if (status.metadata) {
console.log('Received metadata');
console.log(status.metadata);
}
});
response.on('error', function(err) {
console.log('Error:');
console.log('Error Code: ' + err.code);
console.log('Error Message: ' + err.message);
});
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.