![](/img/trans.png)
[英]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.