#### Задание №1. Promise

```javascript
function createPromiseRandom(min, max, delay) {
   return new Promise(function (resolve, reject) {
     setTimeout(function(){
       if(min < max){
          var randNum = min + Math.random() * (max - min);
          resolve(randNum);
        }
        else{
          reject('min cant be greater than max')
        }
      },delay);
   });
}
let p1 = createPromiseRandom(1, 100, 2000);
p1.then(function(result){
  console.log(result);
});
let p2 = createPromiseRandom(1000, 100, 3000);
p2.then(function(){},function(error){
  console.log(error);
});
```

#### Задание №2. Promise

```javascript
new Promise(function (resolve, reject) {
   debugger;
   var num = prompt('Введите число');
   if(!isNaN(+num)){
     resolve(num);
   }
   else{
     reject('Вы ввели нечисловое значение, повторите ввод');
   }
}).catch(function (error) {
   return new Promise(function (resolve, reject) {
      do{
        var num = prompt(error);
      }
      while(isNaN(+num))
      resolve(num);
   });
}).then(function (result) {
   return new Promise(function (resolve, reject) {
      console.log(result);
   });
});
```

#### Задание №3. Генераторы

```javascript
function* generateFibonacci() {
  var fibonacciNum = 1;
  var fibonacciArr = [];
  yield fibonacciNum;
  fibonacciArr[0] = 0;
  fibonacciArr[1] = fibonacciNum;
  for (var i = 2;;i++) {
    fibonacciArr[i] = fibonacciArr[i - 1] + fibonacciArr[i - 2];
    yield fibonacciArr[i];
  }
}
let gen = generateFibonacci();
for (let i = 0; i < 10; i++) {
   console.log(gen.next().value);
}
```

#### Задание №4. Генераторы

```javascript
function* generateFibonacci() {
  var fibonacciNum = 1;
  var fibonacciArr = [];
  var nextValType = yield fibonacciNum;
  fibonacciArr[0] = 0;
  fibonacciArr[1] = fibonacciNum;
  for (var i = 2;;i++) {
    var returnVal;
    fibonacciArr[i] = fibonacciArr[i - 1] + fibonacciArr[i - 2];
    returnVal = nextValType != 'string'? fibonacciArr[i]: fibonacciArr[i].toString();
    nextValType = yield returnVal;
  }
}
let gen = generateFibonacci();
console.log(gen.next().value); // 1
console.log(gen.next("string").value); // "1"
console.log(gen.next("number").value); // 2
console.log(gen.next().value); // 3
console.log(gen.next("string").value); // "5"
```

#### Weather(promises)

##### http://homeworkreactjs.pavelefimen95.fe.a-level.com.ua/hw1/Weather

