首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于生成器的Javascript协同库支持Chrome浏览器

基于生成器的Javascript协同库支持Chrome浏览器
EN

Stack Overflow用户
提问于 2014-02-04 02:57:20
回答 1查看 5.4K关注 0票数 1

Javascript生成器帮不了什么忙,因为它不是真正的协同机制。因此,我希望在浏览器中使用一些新的ecmascript 6关键字“产”。也就是说,我希望我能够在调用堆栈中的多个帧中屈服。

据我所知,我刚刚在火狐上找到了一个基于Javascript 1.7+的协同库,可以在http://www.neilmix.com/2007/02/07/threading-in-javascript-17/上找到。

Chrome浏览器长期以来一直支持“收益率”。所以我想知道是否有一个协同实现支持使用Javascript生成器的Chrome浏览器。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-02-04 04:58:17

Q库封装JavaScript生成器函数提供了async方法。在生成器函数中,您可以使用yield关键字异步等待任何Q承诺对象,例如:

代码语言:javascript
运行
复制
function delay(ms) {
    var deferred = Q.defer();
    setTimeout(deferred.resolve, ms);
    return deferred.promise;
}

function main()
{
    var callback = Q.async(function*(){
        var bodyStyle = document.body.style;

        yield delay(1000);
        bodyStyle.backgroundColor = "red";
        printOutput("step 1");

        yield delay(1000);
        bodyStyle.backgroundColor = "green";
        printOutput("step 2");

        yield delay(1000);
        bodyStyle.backgroundColor = "blue";
        printOutput("step 3");

        yield delay(1000);
        printOutput("step 4");
        bodyStyle.backgroundColor = "white";
    });

    Q.fcall(callback).then(function (){
        printOutput("Done!");
    });
}

这是一个工作小提琴。在运行它之前,请确保启用JavaScript在Chrome (chrome://flags/#enable-javascript-harmony)中的和谐。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21542174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档