diff --git a/Libraries/Animation/Animated/Animated.js b/Libraries/Animation/Animated/Animated.js index 81223edcf..f99913f50 100644 --- a/Libraries/Animation/Animated/Animated.js +++ b/Libraries/Animation/Animated/Animated.js @@ -1177,7 +1177,7 @@ var parallel = function( } animations.forEach((animation, idx) => { - animation.start(endResult => { + var cb = function(endResult) { hasEnded[idx] = true; doneCount++; if (doneCount === animations.length) { @@ -1189,7 +1189,13 @@ var parallel = function( if (!endResult.finished && stopTogether) { result.stop(); } - }); + }; + + if (!animation) { + cb({finished: true}); + } else { + animation.start(cb); + } }); }, diff --git a/Libraries/Animation/Animated/__tests__/Animated-test.js b/Libraries/Animation/Animated/__tests__/Animated-test.js index 8f9e52211..cad752ff0 100644 --- a/Libraries/Animation/Animated/__tests__/Animated-test.js +++ b/Libraries/Animation/Animated/__tests__/Animated-test.js @@ -205,6 +205,16 @@ describe('Animated Parallel', () => { expect(cb).toBeCalledWith({finished: true}); }); + it('works with an empty element in array', () => { + var anim1 = {start: jest.genMockFunction()}; + var cb = jest.genMockFunction(); + Animated.parallel([null, anim1]).start(cb); + + expect(anim1.start).toBeCalled(); + anim1.start.mock.calls[0][0]({finished: true}); + + expect(cb).toBeCalledWith({finished: true}); + }); it('parellelizes well', () => { var anim1 = {start: jest.genMockFunction()};