返回一个 Promise 的 Promise?

3

我想创建以下的Promise语法:

我希望在post函数之后调用第二个then,我该怎么做?

randomBytes.then(function() {
   return requestPromise.post(....);
}).then(function() {
   // I want this part to be called after the POST
});

8
如果 requestPromise.post 返回一个 Promise,那么你的代码应该按照你想要的方式工作。 - dfsq
你能发布更多的代码吗?你正在使用 $http 函数吗? - U r s u s
1
这不是一个“返回承诺的承诺”。承诺不会返回任何东西。它们调用在调用then时指定的处理程序。因此,正确的描述是“返回承诺的承诺处理程序”,正如其他人所说,这在承诺规范中被明确定义并且完全可以接受。所以你写的没问题。你试过了吗?你有什么问题? - user663031
2个回答

3
这已经可以使用了(如评论所述-假设.post返回一个承诺),这就是then的重点 - 它允许您等待事情发生。
如果您从then返回一个承诺,链式结构将会假定其状态,因此只有在它完成后才会调用以下部分。
randomBytes.then(function() {
   return requestPromise.post(....);
}).then(function() {
   // WILL ALWAYS BE CALLED AFTER THE POST
});

0

它应该可以工作。 你可以添加一个“then”来获取提交的值;

randomBytes.then(function() {
   return requestPromise.post(....).then((value,...)=>{return value;});
}).then(function(value) {
   //console.log(value);
});

你添加的.then((value,...部分是多余的。(如果你要编写这样的函数,可以更紧凑地编写为value => value; 这样写更明显它并没有完成任何事情。) - user663031

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接