React ve Redux kullanarak bir araç yapıyorum. Bir sunucu tarafında arama yapmak ve bazı verileri almak için whatwg-get kullanıyorum. Veriler başarıyla alındıktan sonra mağazasının bir geri aramada oluşturulacağı bir redüktörüm var. Bazı gecikme ile JavaScript dışa aktarma ifadesini uygulayabilmemin bir yolu var mı?
import {createStore} from 'redux';
import 'whatwg-fetch';
let notificationCardList = [],
initialState,
store;
const fetchData =() => {
fetch('http://localhost:6767/file/data.json')
.then((response) => response.json())
.then((responseData) => {
notificationCardList = Object.keys(responseData).map(key => responseData[key]);
})
.then(initializeReducer);
}
const initializeReducer =() => {
initialState = {
notifCardsToBeDisplayed: notificationCardList,
notifCardToBeDisplayed: null
};
function manipulateNotificationCards (state = initialState, action) {
switch (action.type) {
case 'OPEN_CARD':
return Object.assign(state, {
notifCardsToBeDisplayed: null,
notifCardToBeDisplayed: action.card,
notifCardsContainerPreviousState: action.notifCardsContainerCurrentState
});
case 'DISPLAY_CARD_LIST':
return Object.assign(state, {
notifCardsToBeDisplayed: action.cards,
notifCardToBeDisplayed: null
});
default:
return state;
}
}
store = createStore(manipulateNotificationCards);
}
fetchData();
export {store, notificationCardList};
Ama mağaza asenkron davranışları nedeniyle geri arama, bir parçası olarak oluşturulmaktadır beri, ihracat deyimi muhtemelen CreateStore() deyimi önce idam oluyor
, dolayısıyla ben etkili değilim: İşte benim kodudur tanımlanmamış bir 'mağaza' ihraç etmek. İhracat beyannamesini geri aramada da dahil etmeyi düşündüm ama yine de ihracat beyanları sadece en üst seviyede olabilir. Ben de setTimeout() kullanmayı denedim, ama bu da işe yaramadı. Oluşturulduktan sonra 'mağaza' ihraç etmenin herhangi bir yolu var mı?
sorun JavaScript buna izin vermez gibi ben bir geri aramasında ihracat deyimi yerleştirin olamaz olmasıdır. Bu yüzden 'mağaza' her zaman bir değer atanmadan önce dışa aktarılacaktır. Sorum şu ki, bir şekilde geri verme işleminin gerçekleştirileceği zamanı sağlamak için ihracat bildirimini bir gecikmeyle çalıştırabilir miyim. –
@RajarshiChakrabarti - İhraca bir geri bildirimde bulunmamayı söylemedim. Bir söz vermeyi veya geri arama yapan bir işlevi vermeyi söyledim. İhracat beyannamesini gecikmeyle yapamazsınız. Kodunuzu yeniden yapılandırmanız gerekir, böylece arayan değerlerin hazır olmasını bekler. Ayrıca, arayanın bir modül işlevine bir geri bildirimi iletmesini sağlayabilirsiniz ve değer hazır olduğunda geri arama çağrılır ya da arayanın bir '.then()' işleyicisini ekleyebileceklerine dair bir söz vermeniz gerekir. Değer hazır olduğunda çağrılır. – jfriend00
@RajarshiChakrabarti - Örnekler: http://stackoverflow.com/questions/34962075/how-to-async-require-in-nodejs/34962383#34962383 – jfriend00