Javascript Kriskowal Q JS 承诺无效
Javascript Kriskowal Q JS promise not working
我已经使用 kriskowal/q 模块创建了一个承诺,但是当我尝试使用它时,它不会进入任何函数,无论是快乐路径还是错误路径。
这是我的承诺创作class
var Q = require('q');
var Test = function () {
};
Test.prototype = (function () {
var testt = function () {
var deferred = Q.defer();
var x = 5;
if (x === 5){
deferred.resolve('resolved');
}else{
deferred.error(new Error('error'));
}
return deferred.promise;
};
return {
testt : testt
}
}());
module.exports = Test;
这就是我要使用它的方式
var Test = require('../src/js/test.js');
describe("Test", function () {
"use strict";
var test = null;
beforeEach(function () {
test = new Test();
});
it("should return the promise", function () {
test.testt().then(
function (a) {
console.log(a);
},
function (b) {
console.error(b);
}
);
});
});
因为这是一个 jasmine 测试 class 如果你不熟悉 jasmine,'it' 函数里面的内容就是我如何使用 promise 的逻辑。 'testt' 是我创建承诺的函数。为了更清楚地说明,我附上了整个代码。
问题:它不打印 a 或 b
您的 it
立即完成,而不是在承诺的 resolution/rejection 之后完成。
it("should return the promise", function (done) {
test.testt().then(
function (a) {
console.log(a);
done();
},
function (b) {
console.error(b);
done();
}
);
});
有关详细信息,请参阅 here。
我已经使用 kriskowal/q 模块创建了一个承诺,但是当我尝试使用它时,它不会进入任何函数,无论是快乐路径还是错误路径。
这是我的承诺创作class
var Q = require('q');
var Test = function () {
};
Test.prototype = (function () {
var testt = function () {
var deferred = Q.defer();
var x = 5;
if (x === 5){
deferred.resolve('resolved');
}else{
deferred.error(new Error('error'));
}
return deferred.promise;
};
return {
testt : testt
}
}());
module.exports = Test;
这就是我要使用它的方式
var Test = require('../src/js/test.js');
describe("Test", function () {
"use strict";
var test = null;
beforeEach(function () {
test = new Test();
});
it("should return the promise", function () {
test.testt().then(
function (a) {
console.log(a);
},
function (b) {
console.error(b);
}
);
});
});
因为这是一个 jasmine 测试 class 如果你不熟悉 jasmine,'it' 函数里面的内容就是我如何使用 promise 的逻辑。 'testt' 是我创建承诺的函数。为了更清楚地说明,我附上了整个代码。
问题:它不打印 a 或 b
您的 it
立即完成,而不是在承诺的 resolution/rejection 之后完成。
it("should return the promise", function (done) {
test.testt().then(
function (a) {
console.log(a);
done();
},
function (b) {
console.error(b);
done();
}
);
});
有关详细信息,请参阅 here。