如何从ClientRequest返回两个变量?

问题描述

我发出了http请求(类:ClientRequest),我需要通过promise从我的“登录方法”中返回两个变量。

function login(name,pass,server) {
  return new Promise((resolve,reject) => {

    const request = net.request({
      method: 'GET',url: server+'/names.nsf?Login&Username=' + name + '&Password=' + pass,useSessionCookies: true,redirect: 'follow'
    }
    )
   
   var first
   var second
    ///first
    request.on('response',(response) => {
      ... 
      first = response.statusCode
    })
   ///second
   request.on('redirect',(statusCode,method,redirectUrl) => {
      ... 
      second = redirectUrl
    })

  resolve([first,second])

    request.end()
    
  });
}

我以这种方式使用它:

ipcMain.on('loginbackend',async (event,arg) => {
 
  try {
    const loginInfo = await login(arg.name,arg.pass,arg.server)
    event.returnValue = loginInfo
  }
  catch (error) {
    console.error('ERROR:');
    console.error(error);
  } 
});

我可以返回将resolve()放到request.on方法中的var,但是我需要从两个request.on中都返回两个var。似乎request.on正在同步,我该怎么办?

解决方法

当发出end的{​​{1}}事件时,您应该返回变量

response