Javascript 在返回承诺中的if-else之后,如何运行另一个函数?
我有一个逻辑,试图在if-else之后在返回承诺的then过程中运行rp请求承诺。根据我的假设,我认为这个过程应该经过步骤1到步骤10,有些部分可能会重复并增加价值。在问题解决完毕后,最后,它将转到doOther 下面是我的代码的简化版本,尽管有点混乱:Javascript 在返回承诺中的if-else之后,如何运行另一个函数?,javascript,es6-promise,request-promise,Javascript,Es6 Promise,Request Promise,我有一个逻辑,试图在if-else之后在返回承诺的then过程中运行rp请求承诺。根据我的假设,我认为这个过程应该经过步骤1到步骤10,有些部分可能会重复并增加价值。在问题解决完毕后,最后,它将转到doOther 下面是我的代码的简化版本,尽管有点混乱: const request = require("request"); const rp = require("request-promise"); let url = "http://localhost:3000/"; let sendRe
const request = require("request");
const rp = require("request-promise");
let url = "http://localhost:3000/";
let sendResult = c => {
console.log("step 4", c);
return new Promise((resolve, reject) => {
if (c < 5) {
console.log("step 5 resolve(true)", c);
resolve(true);
} else {
console.log("step 5 resolve(false)", c);
resolve(false);
}
});
};
let repeat = (a, b) => {
c = a + b;
console.log("step 3", c);
return sendResult(c).then(result => {
console.log("step 6", result);
if (!result) {
console.log("step 7");
rp(url).then(data => {
console.log("step 8");
let d = c + 1;
if (d < 7) {
console.log("step 9", d);
return repeat(d, a);
} else {
console.log("step 10", d);
return "done";
}
});
} else {
return repeat(c, a);
}
});
};
let solveProblem = (a, b) => {
return new Promise((resolve, reject) => {
resolve(a + b);
});
};
let doOther = () => {
console.log("doOther");
};
let run = (a, b) => {
console.log("step 1");
solveProblem(a, b)
.then(data => {
console.log("step 2", data);
return repeat(data, 1);
})
.then(() => {
return doOther();
});
};
run(1, 1);
我肯定这是异步问题,但我不确定如何修改它以满足我的需求步骤1~10,然后再进行修改。有人能帮我弄清楚吗?谢谢。您需要返回rpurl
为了把它锁起来
...
return rp(url).then(data => {
console.log("step 8");
let d = c + 1;
if (d < 7) {
console.log("step 9", d);
return repeat(d, a);
} else {
console.log("step 10", d);
return "done";
}
});
...
rpurl.then=>返回rpurl.then否则它不会被链接您期望的输出是什么?正如CertainPerformance所说的。另外,看一看,它详细地解释了承诺可以回报什么,然后会发生什么。顺便说一句,您可以将solveProblem写成a,b=>{Promise.resolvea+b;}注意没有新的。@CertainPerformance谢谢!它就像一个符咒。@Frax谢谢!!我学会了一种新的语法。
...
return rp(url).then(data => {
console.log("step 8");
let d = c + 1;
if (d < 7) {
console.log("step 9", d);
return repeat(d, a);
} else {
console.log("step 10", d);
return "done";
}
});
...