gpt4 book ai didi

javascript - 处理 promise

转载 作者:行者123 更新时间:2023-11-30 08:24:57 25 4
gpt4 key购买 nike

我想问一个关于我使用 Promises 的方式的问题,因为我不确定我是否遇到了过于复杂的事情。

首先,我试图创建一些我想一个接一个执行的方法,因为它们依赖于之前每个方法的结果。

我的项目结构是这样的

my_project
csv
helpers
FileDownload.js
scripts
getCSVData.js
app.js

现在每个文件看起来像

## FileDownload.js
const fetch = require('node-fetch');
const fs = require('fs');

module.exports = function(url, target) {
return fetch(url)
.then(function(res) {
return new Promise((resolve, reject) => {
var dest = fs.createWriteStream(target);
res.body.pipe(dest)
.on('finish', () => resolve()) // ** Resolve on success
.on('error', reject); // ** Reject on error
});
}).then(result => {
console.log(`File saved at ${target}`)
return result;
});

}

## getCSVData.js

const file_download = require('../helpers/FileDownload')

function getPremierLeagueData() {
file_download("http://www.football-data.co.uk/mmz4281/1718/E0.csv", "./csv/premier_league/premier_league.csv")
}

module.exports = {
getPremierLeagueData: getPremierLeagueData
}

## app.js
const premier_league = require('./scripts/getCSVData')

premier_league.getPremierLeagueData()
.then(function(result){ console.log(result)})

运行 node app.js 时出现错误 TypeError: Cannot read property 'then' of undefined

如果我回到我的 FileDownload 函数和未定义的 console.log(result)

我在这里的困惑是,因为调用了 resolve() 我认为 Promise 已解决?所以这应该延续到 .then

我显然误解了这里的内容。

最佳答案

您的 getPremierLeagueData 函数不返回 Promise。它不返回任何东西......

你只需要返回file_download的结果,这已经是一个Promise:

function getPremierLeagueData() {
return file_download(args)
}

关于javascript - 处理 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47350993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com