Ошибка типа: (промежуточное значение). Тогда это не функция - PullRequest
0 голосов
/ 19 ноября 2018

Я использую реагирование 16, Babel 7, веб-пакет 4.

другой проект работает, но этот проект не работает.ошибка (промежуточное значение). то не является функцией.я не знаю в чем проблема ... ммм ... как решить эту проблему?пожалуйста, помогите мне.

import React, { Component } from 'react';
// import throttle from 'lodash.throttle'
import debounce from 'lodash.debounce';


class Promise extends Component {
    constructor() {
        super();
        // this.handleDebounce = this.handleDebounce.bind(this);
    }
    handleDebounce = (e) => {
        // debounce(this.handleStart, 100); // 이런식으로 쓰면 안된다!! SyntheticEvent pooling (이벤트 풀링)  참고 https://reactjs.org/docs/events.html#event-pooling
        // 콜백함수는 해당 이벤트가 실행되는 동안에만 유효함
        this.setSearchTerm(e.target.value);
    }

    setSearchTerm = debounce((searchTerm) => this.handleStart(searchTerm), 2000);

    handleStart = (value) => {
        console.log("start", value)
        this.handlePromise1(value)
            .then(text => {
                console.log(text)
            })
            .catch((err) => {console.log("err", err)})
    }

    handlePromise1 = (value) => {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                this.handlePromise2(resolve(value));
            }, 300);
        });
    }

    handlePromise2 = (value) => {
        return new Promise((resolve, reject) => {
            resolve(value);
        });
    }

    render() {
        return (
            <div>
                <input onKeyUp={this.handleDebounce}></input>
            </div>
        );
    }
}



export default Promise;

1 Ответ

0 голосов
/ 19 ноября 2018

Решение: (редактировать 1)

Проблема не в асинхронности, а в переопределении Promise в браузере. Новый Promise () на самом деле не создает ожидаемое обещание. Отметьте здесь

Асинхронизация не требуется , как я упоминал до этого редактирования, как показано ниже:

устаревший ответ (не прав): просто для справки: Я думаю, что проблема была отсутствующей асинхронной во время объявления handlePromise1. Потому что это означает, что функция является асинхронной и может возвращать Promise в качестве возвращаемого значения. если он не указан, он будет обрабатываться как любой объект, и .hen может быть недоступен.

Я только что добавил async и обнаружил, что он работает в этот код

Также комментарий @bravo действителен. Вы не должны пытаться переопределить Promise в любом коде JS

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...