JSFiddle - React, Tailwind, and code Playground

by joplomacedo

JavaScript

function createMergedStreamsData( dataKeys ) {
            let data = {};

            let onStreamCb = () => {};

            let isMissingData = true;

            return {
              onStream( cb ) {
                onStreamCb = cb;

                return {
                  cancel() {
                    onStreamCb = () => {};
                  }
                }
              },

              send( dataFragment ) {
                data = {
                  ...data,
                  ...dataFragment
                };
                
                console.log(data);
                
                const d = dataKeys.findIndex( key => !(key in data) );
                console.log(d);

                isMissingData = isMissingData || dataKeys.findIndex( key => !(key in data) ) !== -1;
                
                console.log('isisMissingData', isMissingData)

                if ( !isMissingData ) {
                  onStreamCb(data);
                }
              }
            }


          }
          
          
         const mergedStreams = createMergedStreamsData([
            'a',
            'b',
            'c'
          ])

          mergedStreams.onStream( data => {
						console.log('data', data)
          })
          
          mergedStreams.send({
          	a: 3
          })
          mergedStreams.send({
          	b: 7
          })
          mergedStreams.send({
          	c: 9
          })