2017-11-06 14 views
0

그래서이 악몽 코드는 완벽하게 작동하며 수업에 넣었습니다. 그러나()는 잘 작동 기능 재미없는 (:-(약속 오류를 던지기 시작 약속 및 악몽 J 클래스의 자바

class test { 
 
    constructor() { 
 
    this.init(() => { 
 
     this.start() 
 
    }) 
 
    } 
 

 
    init() { 
 
    this.nightmare = new Nightmare({ 
 
     show: true, 
 
     typeInterval: 20, 
 
     openDevTools: { 
 
     detach: true 
 
     } 
 
    }); 
 
    } 
 

 
    async start() { 
 

 
    await this.nightmare 
 
     .useragent(userAgent) 
 
     .goto("https://www.yahoo.com") 
 

 
    fun(); 
 

 
    async function fun() { 
 
     await this.nightmare.goto('https://google.com') 
 
    } 
 
    } 
 
} 
 

 
new test().start();
오류는 다음과 같습니다.

(node:1101) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'nightmare' of undefined

(node:1101) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

+0

당신의'기다리고 this.nightmare.goto ('https://google.com')'시도' – dzm

+0

'await fun();'시도 했습니까? 함수 초기화 후 호출을 이동하면 어떻게됩니까? –

답변

1

정말이없는 약속이나 약속과 관련이있는 경우 thisfun() 안에있는 객체를 참조하지 않으므로 오류가 발생합니다. 함수를 만들고 호출 할 때 함수를 호출 할 때 fun() 당신은 당신의 객체에 대한 this 참조를 잃어 버렸습니다. 생각해보십시오 : thisfun()에 정의되지 않은 것을 볼 수

class test { 
 
    constructor() { 
 
     this.init() 
 
    } 
 
    
 
    init() { 
 
     this.prop = "a property" 
 
    } 
 
    start() { 
 
     console.log("this outside of fun: ", this) 
 
     fun() 
 
     function fun(){ 
 
      console.log("this in fun:", this) 
 
     } 
 
    } 
 
}  
 
new test().start()

.

fun() 진정한 방법을 고려하고 또한 수동으로 같은과 this을 결합 할 수 this.fun()로 전화 : 랩

fun.call(this)