Javascript 不能使用承诺
我试图在node中使用承诺 但是,当时的部分没有被执行。 第一个函数返回一个resolve()实例。 我怎样才能解决这个问题 代码如下:Javascript 不能使用承诺,javascript,node.js,promise,Javascript,Node.js,Promise,我试图在node中使用承诺 但是,当时的部分没有被执行。 第一个函数返回一个resolve()实例。 我怎样才能解决这个问题 代码如下: exports.refresh_access_token = function (environment_hash) { ... Model.update(values, {where: where}).then(function () { console.log('updated!'); resolve("
exports.refresh_access_token = function (environment_hash) {
...
Model.update(values, {where: where}).then(function () {
console.log('updated!');
resolve("Success!");
}).catch(function (err) {
console.log('error on update');
});
...
}
async.map(accounts, function (account) {
module.exports.refresh_access_token(account.environment_hash).then(function () {
console.log('async called back');
});
}
您需要兑现承诺,才能使用
,然后
返回模型。更新(…)
您的问题不是100%清楚,但有几个错误可以修复:
return
添加到return
Model.update(…)`resolve()。事实上,这可能会导致抛出异常,因为未定义resolve
.then()
处理程序中时,原来的承诺已经解决。你不需要解决任何问题。要返回一个值作为父承诺的解析值,只需返回该值即可.catch()
处理程序中登录时,如果希望主机承诺保持拒绝状态,则必须重新抛出错误。否则,错误将被“处理”,承诺将更改为已解决async
库与promissions混合使用是没有意义的。它们是管理异步操作的不同方法。选择一种方案或另一种方案——不要混用。如果你已经有了像你这样的承诺,那么你可以回报这个承诺,让打电话的人使用这个承诺。当您已经有承诺时,无需使用async
库exports.refresh_access_token = function (environment_hash) {
...
return Model.update(values, {where: where}).then(function () {
console.log('updated!');
return "Success!";
}).catch(function (err) {
console.log('error on update');
// after logging, make sure promise stays rejected
throw err;
});
...
}
我添加了返回模型,但仍然没有任何结果。每次使用承诺时,您都需要返回它,以便调用函数可以等待它,对于您显示的代码,它应该可以工作,可能您没有显示的代码中存在问题我编辑了代码。我在async.map函数中调用该函数。因为我想为parellel中数据库的每个元素运行一个特定的进程(refresh_access_token函数),然后仅当refresh_access_token完成@user3
时才执行另一个进程,第一个函数返回一个resolve()实例
什么是resolve实例?它只是resolve('suces');行但是什么是解析
?它没有特殊的内置含义,也没有在代码中定义。我只是遵循这个:它使用resolve('Success!');在其中一个示例中,该示例中的resolve是一个回调,它告诉promise如何解析。它不是一个全局变量。您的示例将抛出一个异常。谢谢您的帮助,但它仍然不起作用。我想为parellel(刷新\访问\令牌函数)中数据库的每个元素运行特定的进程然后,仅当刷新\u访问\u令牌finished@FilipeFerminiano-当您只包含这么多代码,并且没有详细说明出现问题的具体位置时(例如,解释您已经完成的调试和故障排除),我们没有办法帮助您解决更大的问题。您刚才描述了一大堆与问题中的代码完全无关的东西。我们正在尽最大努力使用您显示的代码和提供的描述。见鬼,我已经给了你四件事要在这么多代码中修复。在这里,我们没有什么可以做的了。好的,谢谢你的回答。我想帮你解决我的问题。但我对这样做的承诺知之甚少。我只知道代码没有像我预期的那样工作。我将对此进行更多的研究,并检查我是否走上了正确的道路。我接受你的回答,作为对你帮助的感谢。是的,对不起,这会消除噪音:p