标签: q

Can I make a synchronous promise in the JavaScript Q library?

I want to do something like the following:

delay( 2500 )
  .then( function () { console.log( "Step 1 done" ) } )
  .then( delay( 7500 ) )
  .then( function () { console.log( "Step 2 done" ) } );
Run Code Online (Sandbox Code Playgroud)

So implementation of delay has been demonstrated many times before:

function delay( ms ) {
  var deferred = Q.defer();
  setTimeout( deferred.resolve, ms );
  return deferred.promise;
}
Run Code Online (Sandbox Code Playgroud)

But if I run the above in node.js I get:

... delay of 2500ms
Step 1 …
Run Code Online (Sandbox Code Playgroud)

javascript q

15
推荐指数
1
解决办法
2万
查看次数

与Bower一起安装的Q 2.0.0会导致Uncaught ReferenceError:require未定义

我在一个项目中使用Q,而我正在使用bower来管理我的JS依赖项.我在bower.json中包含了Q 2.0.0和bower

"dependencies" : {
    "q": "~2.0.0"
}
Run Code Online (Sandbox Code Playgroud)

在我的index.html中,我将Q包含在脚本标记中

<script src="bower_components/q/q.js"></script>
Run Code Online (Sandbox Code Playgroud)

当我加载页面时,我在控制台中看到:

未捕获的ReferenceError:require未定义q.js:43

q.js的第43行:

require("collections/shim");
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?我应该使用Browserify或require.js来实现这一点吗?我希望只需使用标签就可以访问该库.

bower q

15
推荐指数
1
解决办法
3884
查看次数

如何使用angularjs $ q顺序链接promise?

在promise库Q中,您可以执行以下操作来按顺序链接promise:

var items = ['one', 'two', 'three'];
var chain = Q();
items.forEach(function (el) {
  chain = chain.then(foo(el));
});
return chain;
Run Code Online (Sandbox Code Playgroud)

但是,以下内容不适用于$ q:

var items = ['one', 'two', 'three'];
var chain = $q();
items.forEach(function (el) {
  chain = chain.then(foo(el));
});
return chain;
Run Code Online (Sandbox Code Playgroud)

chaining sequential angularjs q angular-promise

15
推荐指数
3
解决办法
3万
查看次数

承诺 - 错误回调与捕获

有人可以告诉我,如果使用错误回调与catch函数之间存在差异$q.promise吗?

例如两个代码片段在功能上是等价的吗?

function doSomething0() {
    var deferred = $q.defer();

    ...

    return deferred.promise;
 }

 doSomething0()
    .then(doSomething1)
    .then(doSomething2)
    .then(doSomething3)
    .catch(function (err) {
        // do something with `err`
    });
Run Code Online (Sandbox Code Playgroud)

function doSomething0() {
    var deferred = $q.defer();

    ...

    return deferred.promise;
 }

 function errorHandler(err) {
    // do something with `err`
 }

 doSomething0()
    .then(doSomething1, errorHandler)
    .then(doSomething2, errorHandler)
    .then(doSomething3, errorHandler);
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么要使用第二个呢?在我看来,它看起来更加丑陋并导致更多的代码重复?

angularjs q angular-promise

15
推荐指数
1
解决办法
3610
查看次数

如何在SpringBoot中配置其他类路径?

我想制作独立的Web应用程序.我有一些SpringBoot的问题.

我的应用程序是SpringBoot的一个jar文件.

但我的应用程序通常需要jdbc驱动程序jar.我想为我的应用程序排除jdbc驱动程序jar.我想从lib文件夹中读取库jar.

但是SpringBoot的lib文件夹BOOT-INF/libfinal static.

所以,我想为jdbc驱动程序jar添加外部类路径(lib).

如何在SpringBoot中配置其他类路径.是可用的么?

java spring external q spring-boot

15
推荐指数
2
解决办法
3万
查看次数

未处理的拒绝原因(应为空)

我正在使用Q进入promises模式,我在控制台中不断收到警告"[Q]未处理的拒绝原因(应该是空的)".我做错了什么?

http://jsfiddle.net/FpyDr/1/

function load(url) {
    var deferred = Q.defer();

    $.ajax({
        type: "GET",
        processData: false,
        dataType: "html",
        url: url,
        cache: false
    }).done(function (response, status, xhr) {

        deferred.reject(new Error("test error"));

        return;
    }).fail(function (xhr, status, error) {

        deferred.reject(new Error("ajax failed"));

        return;
    });

    return deferred.promise;
}

load("http://fiddle.jshell.net")
    .then(function (result) {
        console.log("got result", typeof(result));
    })
    .catch(function (error) {
        console.log("got error", error);
        return true;
    })
    .done();
Run Code Online (Sandbox Code Playgroud)

javascript promise q

14
推荐指数
1
解决办法
8286
查看次数

JavaScript中的JavaScript承诺/延迟

我使用支持Promise规范的Q库.但我也尝试使用不久前在Chrome中实现的Promise类(实验性的).

Q中的延迟函数可用于创建未履行的承诺,可以在将来解决或拒绝.

我使用Chrome中提供的原生Promise实现了相同的功能.这是一个例子:

var defer = function() {
    var result = {};
    result.promise = new Promise(function(resolve, reject) {
        result.resolve = function(value) {
            resolve(value);
        };
        result.reject = function(value) {
            reject(value);
        };
    });
    return result;
};

var deferred = defer();
deferred.promise.then(function(value) {
    alert(value);
});
deferred.resolve(10);
Run Code Online (Sandbox Code Playgroud)

我很好奇这个解决方案中存在任何设计缺陷,例如性能下降或不正确.

javascript google-chrome promise q

14
推荐指数
2
解决办法
3890
查看次数

使用递归承诺停止内存泄漏

如何Promise使用Q库创建JavaScript 的递归链?以下代码无法在Chrome中完成:

<html>
    <script src="q.js" type="text/javascript"></script>
    <script type="text/javascript">
        //Don't keep track of a promises stack for debugging
        //Reduces memory usage when recursing promises
        Q.longStackJumpLimit = 0;

        function do_stuff(count) {
            if (count==1000000) {
                return;
            }

            if (count%10000 == 0){
                console.log( count );
            }

            return Q.delay(1).then(function() {
                return do_stuff(count+1);
            });
        }

        do_stuff(0)
        .then(function() {
            console.log("Done");
        });
    </script>
</html>
Run Code Online (Sandbox Code Playgroud)

javascript recursion memory-leaks promise q

13
推荐指数
2
解决办法
6382
查看次数

将yyyy-mm-dd转换为dd mm yyyy

如何将2013-06-24转换为2013年6月24日?我使用以下代码.

date1="2013-06-24";
SimpleDateFormat d= new SimpleDateFormat("dd MMM yyyy");

try{
date2 =  d.parse(date1);
}catch (ParseException e1) {
// TODO Auto-generated catch block
  e1.printStackTrace();
}  
Run Code Online (Sandbox Code Playgroud)

但我收到此错误"java.text.ParseException:Unparseable date:"2013-06-24"(在偏移4处)"

android simpledateformat q

13
推荐指数
1
解决办法
2万
查看次数

链接水线呼叫与Promises

在过去的3天里,我一直在我的头上撞墙.

我正在使用sailsjs和捆绑的水线ORM.我想一个接一个地运行数据库调用.我知道我可以通过嵌套"then"调用来做到这一点,但它只是看起来不对.

我已经多次查看了Q文档和教程,但我仍然没有得到如何连接并从现有的Promises中依次点击"then"调用:(

我想要:

  1. 创建用户
  2. 创造一个动作
  3. 链接用户和操作
  4. 更新用户
  5. 更新动作

我的代码看起来像

 var mail = 'test@test.com';

 Users.create({email:mail, name:''}).then(console.log).fail(console.log);

 Actions.create({actionID:123})
 .then(function(error, action){
        Users.findOneByEmail(mail).then(function(person){
            person.actions.add(action.id);
            person.save(console.log);
        }).fail(console.log)  
     });

 Users.update({email:mail},{name:'Brian'}).exec(console.log);
 Actions.update({actionID:123},{now:'running'}).exec(console.log);
Run Code Online (Sandbox Code Playgroud)

正如你从代码中看到的那样,我一直在使用exec然后混合:P

我认为方法是连接Users.create(...).然后 - > Action.create(...).然后 - > Users.findOneByEmail(...).然后 - >*和更新.

非常感谢任何帮助

orm promise q sails.js waterline

13
推荐指数
1
解决办法
3753
查看次数