javascript - JS - HTTP 请求使用不同功能的结果
问题描述
我有一个使用以下代码从 URL 获取数据(字符串)的 GET 请求:
var https = require('https');
let urldata;
var options = {
host: 'test.com',
path: '/test.php'
}
var request = https.request(options, function (res) {
let data = '';
res.on('data', function (chunk) {
data += chunk;
});
res.on('end', function () {
urldata = data;
console.log(urldata); //Returns the retrieved data from URL into console
});
});
request.end();
现在我有第二个函数,它需要我从 Request abvoe 获得的数据:
async execute(message, args, Discord, client) {
message.author.send(urldata);
}
问题在于第二个函数中的“urldata”是“未定义”,因为第一个是异步的并且还没有给出结果。我已经读到我必须使用“回调”或“承诺”才能在我的第二个函数中使用第一个函数的数据。我尝试过,但无法获得有效的结果。
如果有人可以帮助我将其重新编码为回调或承诺,那就太棒了,这样第一个函数的数据就可以用于第二个函数。
解决方案
const urldata = await Promise(resolve => {
var request = https.request(options, function (res) {
let data = '';
res.on('data', function (chunk) {
data += chunk;
});
res.on('end', function () {
resolve(data)
});
});
request.end();
})
console.log(urldata); //Returns the retrieved data from URL into console
// Now you can run the second function with "urldata" in it
推荐阅读
- android - 从第一个片段列表视图适配器类更新 viewModel 列表时,在第二个片段中未调用 ViewModel
- sql-server - 如何在 Classic ASP 的记录集中显示 DateTime 字段?
- c++ - 在调用析构函数之前删除的 C++ 动态成员数组
- c++ - 在派生自线程类的构造函数中传递字符串
- vue.js - 如何编辑作为属性传递的 vue 数据?
- php - � (无效字符)在数组键中,如何访问?
- jquery - jquery用fb post一一加载div
- php - 如何在不重置所有 Woocommerce 插件的情况下重置 Woocommerce 收入?
- r - R网格排列tiff显微镜RGB
- oracle - 在 SQL 开发人员中创建新连接时出现问题