Skip to content

Instantly share code, notes, and snippets.

@halbgut
Last active August 29, 2015 14:26
Show Gist options
  • Save halbgut/03d602a789a3f150d8c6 to your computer and use it in GitHub Desktop.
Save halbgut/03d602a789a3f150d8c6 to your computer and use it in GitHub Desktop.
Juniors Tag - JavaScript OOP - FEL, ELR, RIN - Promise Implementation

Ablauf

Übersicht über die drei OOP paradigmen

  • Schreiben der assertions
  • Vergleich zu PHP OOP
  • Für jeder der drei Arten, in der Reihenfolge
    • Einleitng in das Paradigm
    • Implementation
    • Dokumentation

Task

Implementiere und dokumentiere eine vereinfachte version von JavaScript Promises.

API

function myAsyncFunction () {
  var promise = Object.create(Promise)
  var succ = true
  var err = false
  setTimeout(function () {
    if(err) promise.reject(err)
    if(succ) promise.resolve(succ)
  }, 0)
  return promise
}

var test = false
function defineTest (data) {
  test = data
}

myAsyncFunction()
  .then(defineTest)
  .catch(defineTest)

console.assert(test === true, 'Should be true')
test
// => true

Implementationen

Implementiere und Dokumentiere Promise in Paradigmen. Dokumentiere die wichtigsten Teile jedes Paradigmas. Bei allen implementationen sollte im obigen Beispiel der assert call true zurückgeben. Promises sollten in mit diesen drei Methoden implementiert werden:

  • Prototypisch
  • Instanziirung einer Funktion
  • ES6 Klassisch

Notes

function apiCallToMandrill (json) {
  var promise = new Promise()
  HTTP.post('http://api.mandrill.com/newMail', function (err, data) {
    if(err) promise.reject(err)
    promise.resolve(data)
  })
  return promise
}

apiCallToMandrill({
  mailTo: 'dinimuater@ls7.ch',
  header: 'Hallo',
  body: 'Mueter'
})
  .then(function (data) {
    console.log(data)
  })
  .catch(function (err) {
    console.error(err)
  })
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment