मेरे पास एक कोणीय 2 सेवा के भीतर एक फ़ंक्शन है जो Promise.resolve
के माध्यम से नकली डेटा लौटा रहा है, जो .then
के साथ अनचाहे होने पर मुझे एक खाली वादा वस्तु देता है। मैं देख सकता हूँ कि फोन करने के समारोह __zone_symbole__value
संपत्ति में पेलोड के साथ वादा प्राप्त कर रहा है इससे पहले कि यह .then however inside of
तो फिर I seem to be left with just an empty promise.
टाइपस्क्रिप्ट मूल्यों को खोने का वादा करता है .थ
getTemperatureData(): Promise<any> {
let data = this.convertJSONToGoogleChartTable(temperatureData_JSON);
let p = Promise.resolve(data);
return p;
}
में पारित हो जाता Chrome का उपयोग करके मुझे लगता है कि पी ऊपर लग रहा है
तरहZoneAwarePromise {__zone_symbol__state: true, __zone_symbol__value: "[["Date","Temperature","LowTemperature"],["05/11/2…",69.02,null],["06/11/2016 23:54:34",69.99,null]]"}
कॉलिंग कोड जो डीबग करने के लिए दो पंक्तियों में टूटा हुआ है नीचे है।
getTemperatureData() {
var d = this.dataService.getTemperatureData();
d.then(data => this.line_ChartData = data);
}
जब मैं घ देखो मैं ऊपर
ZoneAwarePromise {__zone_symbol__state: true, __zone_symbol__value: "[["Date","Temperature","LowTemperature"],["05/11/2…",69.02,null],["06/11/2016 23:54:34",69.99,null]]"}
.then
साथ समस्या तब होती है, जहां के "डी" मूल्य सिर्फ एक खाली वादा है पी के रूप में ही देखते हैं। जो मैं देख रहा हूं उसे दिखाने के लिए नीचे क्रोम देव टूल्स कंसोल से लिया गया था।
d.then(data => console.log(data))
ZoneAwarePromise {__zone_symbol__state: null, __zone_symbol__value: Array[0]}
कोई फर्क नहीं पड़ता कि मैं क्या करता हूं और मैंने कितने संयोजन किए हैं, मैं डी के अंदर अपने डेटा तक नहीं पहुंच सकता। (ध्यान दें कि पी और घ केवल अब के लिए नीचे कोड को तोड़ने के लिए अस्थायी हैं।)
मेरे package.json नीचे है:
{
"name": "angular2",
"version": "0.0.0",
"license": "MIT",
"angular-cli": {},
"scripts": {
"start": "ng serve",
"lint": "tslint \"src/**/*.ts\"",
"test": "ng test",
"pree2e": "webdriver-manager update",
"e2e": "protractor"
},
"private": true,
"dependencies": {
"@angular/common": "~2.1.0",
"@angular/compiler": "~2.1.0",
"@angular/core": "~2.1.0",
"@angular/forms": "~2.1.0",
"@angular/http": "~2.1.0",
"@angular/material": "^2.0.0-alpha.9-3",
"@angular/platform-browser": "~2.1.0",
"@angular/platform-browser-dynamic": "~2.1.0",
"@angular/router": "~3.1.0",
"core-js": "^2.4.1",
"ng2-bootstrap": "^1.1.16",
"node-mysql": "^0.4.2",
"rxjs": "5.0.0-beta.12",
"ts-helpers": "^1.1.1",
"zone.js": "^0.6.23"
},
"devDependencies": {
"@types/jasmine": "^2.2.30",
"@types/node": "^6.0.42",
"angular-cli": "1.0.0-beta.19-3",
"codelyzer": "1.0.0-beta.1",
"jasmine-core": "2.4.1",
"jasmine-spec-reporter": "2.5.0",
"karma": "1.2.0",
"karma-chrome-launcher": "^2.0.0",
"karma-cli": "^1.0.1",
"karma-jasmine": "^1.0.2",
"karma-remap-istanbul": "^0.2.1",
"protractor": "4.0.9",
"ts-node": "1.2.1",
"tslint": "3.13.0",
"typescript": "~2.0.3",
"webdriver-manager": "10.2.5"
}
}
'चलो पी = Promise.resolve (डेटा); यह अजीब है। एक वादा एसिंक है, इसलिए यदि आप यहां वादे का नतीजा पाने की उम्मीद करते हैं, तो यह नहीं है कि यह कैसे काम करता है। – Maxime
कृपया हमें पूरा कोड दिखाएं। आप 'this.line_ChartData' के साथ क्या कर रहे हैं? क्या आप शायद इसे कहीं खाली कर रहे हैं? ध्यान दें कि यह वही सरणी का संदर्भ देता है जो वादे में निहित है। 'This.line_ChartData = data.slice() 'इसके बजाय – Bergi