我有一个gulp任务,从GitHub下载一些JSON文件,然后提示用户在这些文件中替换值。例如,我有.ftpconfig
下载,然后要求用户输入主机名,用户名,密码和路径。
因为首先需要先下载文件才能配置它,并且需要按顺序配置每个文件,所以我使用了很多嵌套的回调。我想改变这个"回调地狱"系统,以便它使用异步/等待和/或承诺,但我很难理解为什么我的代码不工作;承诺似乎异步地触发了.then()
函数,这对我来说没有意义。
我的目标如下:
我尝试过多种方法,但没有一种方法可行。我放弃了我使用过的代码,但这里重复了我曾经尝试过的事情:
尝试#1:
return new Promise((resolve) => {
// download files...
}).then((resolve) => {
// configure first file...
}).then((resolve) => {
// configure second file...
}).then((resolve) => {
// configure thrid file...
});
尝试#2:
const CONFIG_FILES = async () => {
const bs_download = await generate_config("browsersync");
const ftp_download = await generate_config("ftp");
const rsync_download = await generate_config("rsync");
return new Promise(() => {
configure_json("browsersync");
}).then(() => {
configure_json("ftp");
}).then(() => {
configure_json("rsync");
});
};
我确定我做的事情显然是错误的,但是我在JavaScript上没有足够的适应性来看问题。任何帮助都将非常感激。
我的gulp任务可以在这里找到:
答案 0 :(得分:0)
感谢@EricB,我能够弄清楚我做错了什么。这主要是让我的函数也回归承诺。