动态定义蓝鸟承诺中的函数
Dynamically define function in Bluebird promise
我有一个我认为是一个简单的问题 - 但我根本无法解决它。我有一个我正在使用的 API,它返回一个function
供我在完成所有代码时调用。我曾以为我可以将函数放在finally
调用中 - 但似乎我无法在承诺链中重新定义函数。
一个简单的例子:
let a= function() {console.log("at the start");};
BbPromise.resolve("Executing")
.tap(console.log)
.then(function() {a = function() {console.log("at the end");}})
.finally(a);
最后,我将如何让"At the end"
打印出来?此示例将始终打印"At the start"
。如果我使用字符串而不是函数,它会按预期工作。
在从
异步回调覆盖finally
调用之前,您将a
传递给该调用 - 这是一个经典。
您只需要在finally
回调中取消引用a
:
.finally(function() { a(); })
当然,请注意,重新定义函数很奇怪,可能有更好的方法来解决您的实际问题。如果你希望得到一个函数的承诺,你不应该为函数创建一个全局变量,而应该.then(fn => fn())
。
相关文章:
- 从函数返回角度承诺
- 如何按照承诺使用mocha/chai/chai测试ES7异步函数
- 两个函数之间的角度承诺
- 当链接javascript承诺时,如何处理then()函数中的条件
- 角承诺的“then”函数的成功回调的词汇范围是什么?
- JQuery 承诺已经包含回调的函数
- 将同步函数包装到承诺中的最佳方法是什么?
- 在同一函数中解析承诺后返回承诺
- JavaScript中的延期/承诺概念是一个新的概念,还是函数式编程的传统部分
- “未捕获(在承诺中)”在获取“then”方法中调用拒绝函数时
- 使用 Promise 在另一个函数中调用带有 Bluebird 承诺库的函数
- 从承诺返回不返回函数会导致警告
- 尝试编写承诺时出错:承诺解析器对象不是函数
- 如何在恢复函数之前等待 JavaScript 承诺解析
- WinJS,从可能是异步的函数返回一个承诺,也可能不是异步的
- javascript承诺在循环中或如何逐个调用函数
- 按照承诺,通过与chai的函数调用验证已解析承诺的内容
- ES6承诺:如何用参数链接函数
- OfflineAudioContext.startRendering()基于承诺的函数在safari中不起作用
- NodeJS 多函数承诺