我需要在Q结构中使用require
Q.fcall(function () {
console.log('1');
}).then(function () {
console.log('2');
require(['myfile'], function () {
console.log('2.1');
});
}).then(function () {
console.log('3');
});
我期待什么?
1
2
2.1
3
我得到了什么?
1
2
3
2.1
有可能吗?我该如何重写构造?
答案 0 :(得分:2)
您需要让require
使用promise,否则您将拥有两个独立的异步系统。我没有测试过,但是这样的事情应该有效:
Q.fcall(function () {
console.log('1');
}).then(function () {
var deferred = Q.defer();
console.log('2');
require(['myfile'], function (myfile) {
console.log('2.1');
deferred.resolve(myfile);
});
return deferred.promise;
}).then(function (myfile) {
console.log('3');
});
答案 1 :(得分:0)
我是promises
的新手。因此我也不确定,但你可以试试这个:
Q.fcall(function () {
console.log('1');
}).then(function () {
console.log('2');
return require(['myfile']);
}).then(function () {
console.log('2.1');
}).then(function (){
console.log('3');
});