在杜克塔佩上使用承诺
Use promise on Duktape
我们如何在Duktape之上使用promise?
我的场景:将客户端JavaScript代码迁移到Duktape,该代码在Web浏览器上加载良好。我正在使用Dukluv(与Duktape和libuv库绑定)二进制文件来运行JavaScript。但是我的javascript依赖于BlueBird库。
当我尝试执行时,出现错误: no async scheduler available
问题出在蓝鸟的时间表.js第33行。代码如下,供参考:
else if ((typeof MutationObserver !== "undefined" &&
(_MutationObserver = MutationObserver)) ||
(typeof WebKitMutationObserver !== "undefined" &&
(_MutationObserver = WebKitMutationObserver))) {
schedule = (function() {
var div = document.createElement("div");
var queuedFn = void 0;
var observer = new _MutationObserver(
function Promise$_Scheduler() {
var fn = queuedFn;
queuedFn = void 0;
fn();
}
);
observer.observe(div, {
attributes: true
});
return function Promise$_Scheduler(fn) {
queuedFn = fn;
div.classList.toggle("foo");
};
})();
}
没有webkitmutationobserver或文档对象,因为我在没有任何浏览器的情况下在Dukluv上运行我的脚本。
我也尝试使用 Q 库,即使在那里我也会收到错误setTimeout not defined
.如果可能的话,请向我建议一个解决方案,使用一些代码片段。谢谢
Bluebird 允许您为这些场景显式设置调度程序。你需要告诉蓝鸟如何直接执行一个函数:
Promise.setScheduler(function(fn){ // fn is what to execute
var timer = uv.new_timer.call({});
uv.timer_start(timer, 0, 0, fn); // add the function as a callback to the timer
});
首先执行所有承诺代码 - 这将解决上述错误。
相关文章:
- 我的职位回报太快了,如何做出承诺
- 打破承诺链的好方法是什么
- 从函数返回角度承诺
- 我怎样才能获得承诺的价值
- 延期承诺值未更新/解析/延期
- 在承诺链中处理早期回报的最佳方式
- 承诺在非节点式回调上使用Bluebird
- 简单的ES6承诺问题-交换解决和拒绝参数
- 组合承诺和非承诺值
- 带有对象/原型的链式承诺(Q延期)
- AngularJS$q承诺使用socket.io
- React JS:未捕获(在承诺中)语法错误:在位置 0 的 JSON 中意外<令牌
- 当一些承诺失败时,如何继续使用$q.all()
- Nodejs和express路由,如何处理客户端的承诺
- 如何在多承诺链中处理谷歌地图API V3事件
- 承诺合并流
- 雷杜克斯.从容器组件描述表示组件的生命周期方法
- 阿贾克斯承诺不起作用
- 在杜克塔佩上使用承诺
- 我什么时候才能等到《普罗克特》中的承诺