2015-04-27 3 views
1

мне нужно использовать требуют внутри Q структурыТребовать внутри Q обещание

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 

Возможно ли это? Как я должен переписать строительство?

ответ

2

Чтобы работать с обещанием, вам необходимо получить require, иначе у вас есть две независимые асинхронные системы. Я не проверял, но что-то, как это должно работать:

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'); 
}); 
+0

Awesome. Это то, что мне нужно – indapublic

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'); 
}); 
+0

Ваши обещания в порядке, но не ваши требования. В RequireJS 'require' не возвращает полезное значение, а передает его на обратный вызов. Таким образом, вы не можете использовать то, что требуется в следующем обещании. – Amadan

+0

@ Амадан. Спасибо за информацию, я это запомню. – Zee

Смежные вопросы