呼吁承诺然后不推迟

时间:2015-12-27 12:03:16

标签: javascript promise bluebird

有一种方法可以在没有延迟的情况下调用此承诺吗? 我想使用 bluebird

我希望它被称为承诺链,几乎没有超时。

var step1 = function () {
    console.log("This is step 1, args=", arguments);
    return "ret 1";
};
var step2 = function () {
    console.log("This is step 2, args=", arguments);
    return "ret 2";
};

var deferred = Q.defer();
var promise0 = deferred.promise;
var promise1 = promise0.then(step1);
var promise2 = promise1.then(step2);

deferred.resolve("foo");

这是我使用的jsFiddle。

http://jsfiddle.net/HKhw8/1067/

更新

我需要在每个逻辑中添加内部但仍然向控制台显示步骤1,2,3我在这里做错了什么? http://jsfiddle.net/HKhw8/1073/

2 个答案:

答案 0 :(得分:0)

Promise.resolve() // pass value you expect as argument in step1
    .then(step1)  // return value will be passed to step2 as argument
    .then(step2);

Promise.resolve docs

答案 1 :(得分:0)

蓝鸟特定答案。

Promise.try(step1).then(step2);

如果您只使用同步步骤 - 请勿使用promises。