StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
				https://doi.org/10.1109/TVCG.2020.3030352
			
			
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							55 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
	
	
							55 lines
						
					
					
						
							1.0 KiB
						
					
					
				'use strict'
 | 
						|
 | 
						|
var nextTick = nextTickArgs
 | 
						|
process.nextTick(upgrade, 42) // pass 42 and see if upgrade is called with it
 | 
						|
 | 
						|
module.exports = thunky
 | 
						|
 | 
						|
function thunky (fn) {
 | 
						|
  var state = run
 | 
						|
  return thunk
 | 
						|
 | 
						|
  function thunk (callback) {
 | 
						|
    state(callback || noop)
 | 
						|
  }
 | 
						|
 | 
						|
  function run (callback) {
 | 
						|
    var stack = [callback]
 | 
						|
    state = wait
 | 
						|
    fn(done)
 | 
						|
 | 
						|
    function wait (callback) {
 | 
						|
      stack.push(callback)
 | 
						|
    }
 | 
						|
 | 
						|
    function done (err) {
 | 
						|
      var args = arguments
 | 
						|
      state = isError(err) ? run : finished
 | 
						|
      while (stack.length) finished(stack.shift())
 | 
						|
 | 
						|
      function finished (callback) {
 | 
						|
        nextTick(apply, callback, args)
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
function isError (err) { // inlined from util so this works in the browser
 | 
						|
  return Object.prototype.toString.call(err) === '[object Error]'
 | 
						|
}
 | 
						|
 | 
						|
function noop () {}
 | 
						|
 | 
						|
function apply (callback, args) {
 | 
						|
  callback.apply(null, args)
 | 
						|
}
 | 
						|
 | 
						|
function upgrade (val) {
 | 
						|
  if (val === 42) nextTick = process.nextTick
 | 
						|
}
 | 
						|
 | 
						|
function nextTickArgs (fn, a, b) {
 | 
						|
  process.nextTick(function () {
 | 
						|
    fn(a, b)
 | 
						|
  })
 | 
						|
}
 | 
						|
 |