Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 返回正文而不是字符串_Javascript_Node.js_Async Await_Requestjs - Fatal编程技术网

Javascript 返回正文而不是字符串

Javascript 返回正文而不是字符串,javascript,node.js,async-await,requestjs,Javascript,Node.js,Async Await,Requestjs,我有一个类似的代码: // src/getSessionId.js function callback(error, response) { // some code return sessionId; // typeof string } async function getSessionId(url = DEFAULT_URL) { const sessionId = await request.post(url, callback); console.log(se

我有一个类似的代码:

    // src/getSessionId.js
function callback(error, response) {
  // some code
  return sessionId; // typeof string
}

async function getSessionId(url = DEFAULT_URL) {
  const sessionId = await request.post(url, callback);
  console.log(sessionId); // logs the expected sessionId
  return sessionId;
}

// src/scrape.js
async function scrape() {
  const sessionId = await getSessionId('http://www.someUrl.com/');
  // expected: sessionId === getSessionId is true => the one I logged before
  // actual: sessionId is the response body => <html> ... <body> ... </body> ... </html>
}
//src/getSessionId.js
函数回调(错误、响应){
//一些代码
return sessionId;//字符串的类型
}
异步函数getSessionId(url=DEFAULT\uURL){
const sessionId=wait request.post(url,回调);
console.log(sessionId);//记录预期的sessionId
返回会话ID;
}
//src/scrap.js
异步函数scrape(){
const sessionId=await getSessionId('http://www.someUrl.com/');
//预期:sessionId==getSessionId为true=>我之前记录的那个
//实际:sessionId是响应主体=>。。。
}
我想要的是预期的
sessionId
,而不是响应html正文。为什么这不能像我预期的那样工作呢


代码可以在这里找到:

代码段用于在浏览器代码中运行。你的不是,所以我把它变成了一个代码块显示会话ID,
await getSessionId
的结果将与上述代码的值相同。请更新您的问题,演示我们可以复制并粘贴到文件中并使用Node.js运行的问题。(还请提供Node.js版本的详细信息以及代码所依赖的任何脚本的版本。)记录预期的sessionId和实际:sessionId是响应主体-这是不太可能的。仅仅因为事情应该按照你的预期运行,而它们不是那样运行,这表明你的案例与描述不同。考虑提供一种如何复制问题的方法-回购,等等。Async函数不等待wait方法,因此在获取url的post请求值或获取回调之前,
getSessionId
方法返回的不是预期的输出。您可以使用promise而不是async或Generator。我建议您在post回调中使用promise或更好地包装getsessionid方法的返回语句您正在使用request进行post。该方法很可能返回一个带有实体的对象,这是完全可以预料的。sessionId将位于主体上,那么为什么不在getSessionId中返回“response.body.sessionId”或其他任何内容呢*假设您将const response分配给wait request.post。。。。