NodeJS 如何将异步函数返回的参数传递给另一个文件使用
实现方案
第一步:修改file1代码,正确返回异步结果并导出
你原有代码中的getToken没有返回值也没有对外导出,首先补全这两点,修改后代码如下:
// 注意NodeJS环境默认没有fetch,需要先安装node-fetch依赖,url请提前定义好 const fetch = require('node-fetch'); async function getToken(){ // 增加return将异步执行结果抛出 return fetch(url) .then(response => response.text()) .catch(err => { console.error('获取token失败', err) throw err }) } // 导出方法供其他文件调用 module.exports = getToken
第二步:修改file2代码,导入方法并等待异步结果
在需要用到token的位置前等待getToken的返回值即可,完全满足file2先运行、等异步结果返回再执行后续逻辑的要求,修改后代码如下:
const { ConsoleMessage } = require("puppeteer"); // 导入file1的getToken方法,路径替换为你实际的file1文件路径 const getToken = require("./file1") const scraperObject = { url : url, // 替换为实际的目标页面地址 async scraper(browser){ try{ let page = await browser.newPage(); console.log(`Navigating to ${this.url}...`); await page.goto(this.url); // 等待file1的异步返回结果,拿到值后再执行后续逻辑 const response = await getToken() await page.$eval("textarea#g-recaptcha-response", text => text.innerHTML = response) // 其他后续逻辑写在这里即可 } catch(err) { console.error('爬虫执行出错', err) } } } module.exports = scraperObject
补充说明
- 如果需要复用token避免重复发请求,可以在file1里加缓存逻辑,拿到token后存到变量里,后续调用直接返回缓存值即可。
- 执行代码前先执行
npm i node-fetch@2安装依赖,v2版本支持CommonJS导入,适配普通NodeJS项目。
内容的提问来源于stack exchange,提问作者user15887962
相关产品推荐
相关产品推荐

