내 설정은 Webpack, React, Redux (redux-thunk 포함)입니다.Redux를 사용하는 웹 사용자를위한 약속 사용
나는 mouseMove
eventListener에 웹 작업자를 통합하기 위해 노력하고 있습니다. 사용자가 드로잉 앱에서 드로잉 할 때 '그룹 선택'rect와 충돌하는 요소를 찾아야합니다.
웹 노동자에 대한 호출
내가 다음과 같이 결의에 따라, FUNC (해결)을 생성 페이로드를 호출하는 약속을 높이기 위해 노력하고, 작업 제작자의 함수 내에서, 그래서 비동기 될 것입니다 :액션 CREATOR :
export const groupSelectionPayload = (a, b, c) => {
let something = doSomething(a, b);
return(new Promise(function(resolve, reject){
let selectedElements = getSelectedElements(something, c);
// Im not sure about the below condition,
// which I am using to call either resolve/reject funcs,
// is there a better way to handle this?
if(selectedElements !== undefined){
resolve(something);
} else {
reject();
}
}));
};
// when promise resolves, we return the action to dispatch
const resolve = function(rectCoOrd){
return ({
type : CREATE_GROUP_SELECTION_RECT,
svgPayload : {
curToolbarCtrlSelection : {
ctrlName : "grpSelect",
props : {
pos : {
x : rectCoOrd[ 0 ],
y : rectCoOrd[ 1 ],
w : rectCoOrd[ 2 ],
h : rectCoOrd[ 3 ]
}
}
}
}
});
};
// func posts message to web-worker
const getSelectedElements = (something, c) => {
worker_handler.postMessage(iMap({
type : "grpSelect",
}));
};
나는 오류를 얻을, 비동기를 위해 돌아 오는-썽크를 사용하여, 아직 오전 : uncaught exception : undefined
Error: Actions must be plain objects. Use custom middleware for async actions.
은 얹는
무엇이 잘못 되었습니까? 위에서 설명한 시나리오를 처리하는 데 더 합리적인 방법이 있습니까?
편집 : 나는 내가 가지고있는 redux-promise 미들웨어를 설치하는 데 필요한.
const store = createStore(reducer, composeEnhancer(applyMiddleware(thunk, promiseMiddleware)));
... Actions must be plain objects ...
오류를 해결했습니다. 그러나 여전히 uncaught exception : undefined
오류가 발생합니다.
이것은 생각하고 받아 들일 수있는 멋진 대답과 많은 것입니다. 모든 작업에 웹 작업자가 필요 없기 때문에 미들웨어로 통합 할 생각은 없습니다. 또한 다른 작업을 수행하는 데 여러 명의 웹 작업자가 필요할 수 있습니다. 사용자가 이미 채워진 요소로 캔버스에 새 요소를 추가 할 때 요소 간의 충돌 (수천 개의 요소에 대한 요소의 좌표를 확인하는 작업이 무거움) ... – Kayote
미들웨어의 개념을 조금 잘못 이해했다고 생각합니다. 그것으로 당신은 어떤 관심있는 행동을 구독하고 다른 모든 사람들은 그냥 지나치게됩니다. 기본적으로 각 작업자에 대해 하나의 미들웨어를 제공 할 수 있습니다. – philipp
그럼 분명히 했어. 실제로 아침에 미들웨어 코드를 이해하는 데 보냈습니다. 그리고 당신의이 의견은 제가 이것을 철저하게 이해할 필요가있는 시멘트입니다.나는 이것을위한 준비가되어있는 다른 질문을 제기 할 것이다 & 희망을 갖고 당신은 그것을 가로 질러 올 것이다 :). 지속적인 피드백에 감사드립니다. 그 대단히 도움이됩니다! Best, – Kayote